簡體   English   中英

PHP Cron作業已設置但未運行

[英]PHP Cron Job set but not running

我已經設置了玉米工作

exec('echo -e "`crontab -l`\n* * * * * http://example.com/cron/sendsms.php" | crontab -');

我已經看到了

$output = shell_exec('crontab -l');
echo '<Pre>';
echo $output;
//o/p * * * * * http://example.com/cron/sendsms.php

到此為止一切正常。

如果我運行此網址( http://example.com/cron/sendsms.php )。 然后就可以正常工作了。

但是cron並沒有在設定的時間執行任務。 問題是什么?

據我所知,您的crontab包含以下行:

* * * * * http://example.com/cron/sendsms.php

就像在終端中輸入http://example.com/cron/sendsms.php並按Enter一樣,URL作為外殼程序命令被調用。 如果要調用遠程PHP腳本,則應使用HTTP客戶端,例如

* * * * * wget -qO /dev/null 'http://example.com/cron/sendsms.php'

上面的命令將HTTP GET請求發送到URL,並將響應輸出到空設備(忽略輸出的常見方法)。


順便說一句,將條目追加到crontab的方式在許多方面都不正確。

不應該使用shell echo命令 ,而使用printf

使用$(...)代替后引號,因為a)無法構建嵌套的命令替換,並且b) $(...)格式更易讀。

避免在PHP中使用復雜的shell構造。 如果需要復雜的Shell構造,則應為Shell腳本創建一個單獨的文件。

您可以借助proc_open()附加crontab條目,而無需使用外殼程序管道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM