เพิ่ม crontab ด้วย PHP

จุดประสงค์ที่ผมจะเพิ่ม crontab โดย php ก็เพราะว่าการเพิ่ม crontab ต้องเพิ่มผ่าน ssh (controlpanel ของ server ก็มีเสือกไม่ใช้) แล้วก็ไม่ชินกับ vi :( … เอาน่า ความมีแฮงไม่เคยปราณีใคร

ใครอยากจะมีแฮงแบบผมลองทำตามนะครับ
1. คุณสามารถตั้ง crontab ได้รึเปล่า ?
2. Hosting ให้คุณใช้ Program Execution Functions ได้รึเปล่า ? ตัวอย่างเช่น exec function
3. ตรวจสอบว่า user ที่เป็นเจ้าของ process ที่รันเว็บของคุณตอนนี้เป็น user ไหนด้วยคำสังนี้

echo exec(“whoami”);

crontab ที่จะเพิ่ม

0 0 * * * php /usr/home/cron.php

ขั้นตอนในการเพิ่ม crontab มีดังนี้ครับ

เก็บคำสั่ง crontab ลง ไฟล์

$cron_cmd    = “0 0 * * * php /usr/home/dexdev/cron.php”;
$cron_file    = “/usr/home/dexdev/cronjob”;
$handle        = fopen($cron_file, “a+”);
fwrite($handle, “$cron_cmd\n”);
fclose($handle);

จัดการ crontab จากไฟล์ที่เตรียมไว้

exec(“crontab $cron_file”);

ตอนนี้ลองเอามาตั้งเวลาส่ง mail….ก็ใช้ได้นะครับเพราะพี่ admin ผมแกบ่นว่า ส่งไรตอนกลางวันส่งเที่ยงคืนเด้
ลองไปประยุกต์ใช้งานกันดูนะครับ :) ได้ผลเป็นไงเอามาเล่าให้ฟังมั่งนะครับ


2 responses so far, want to say something?

  1. Aof says:

    ขอสอบถามเื่พิ่มเติ็๋มได้มั้ยครับ คือว่า command ที่อยู่ในไฟล์ cron.php เนี่ย ถ้าอยากให้มีการ insert update ก็เขียนตามปกติใช่ม้ั้ยครับ (php) คือว่า ผมรันแล้วมันส่งเมล์กลับมาบอกว่า command not found
    ก็เลยสงสัยว่า ที่ทำถูกต้องหรือไ่ม่ ตอนแรกมันส่งเมล์มาบอกว่า No such file or directory พอเอาไปเก็บไว้ถูกที่ถูกทางแล้วมันดันบอกว่า ไม่เจอคำสั่ง ก็เลย งงไปกันใหญ่ รบกวนช่วยตอบข้อสงสัยได้มั้ยครับ ขอบคุณล่วงหน้าครับ

  2. Aof says:

    มา update ครับ ตอนนี้ผมทำได้แล้วนะครับ หลังจากที่ได้คำแนะนำจากคุณ admin ไปวันนั้น ก็ทำให้ cron jobs ทำงานได้ระดับหนึ่ง ดังนี้

    Status: 404
    X-Powered-By: PHP/4.4.7
    Content-type: text/html

    No input file specified.

    ก็ไปมั่วและแก้ไข อยู่นาน เรื่อง No input file specified. เนี่ยแหละ จนกระทั่งไปเจอเว็บ

    http://jonathanmerchant.com/2008/01/23/drupal-crontab-lots-of-emails-with-attached-headaches-or-how-to-get-cronphp-to-work-on-site5-hosting

    From Wiki: …… และ ~/public_html…..

    สรุปว่า ตอนนี้ทำได้แล้วคร๊าบบบบ…. ยังไงก็ขอบคุณอีกครั้งนะครับ

Leave a Reply