繁体   English   中英

通过 cron 作业发送 HTTP 请求

[英]Sending HTTP request through cron job

我有一个部署在服务器中的 PHP 文件:

/var/www/html/cron/leave_mail.php

此 PHP 文件中的代码只是通过 CURL 发送请求(url 的服务器与 cron 作业的服务器相同):

<?php

$url = "http://my-site.build.com/sendmail/sendmail_leave";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$head = curl_exec($ch);

curl_close($ch);

?>

现在我在部署 PHP 文件的同一台服务器上创建了一个 cron 作业:

* * * * * php /var/www/html/cron/leave_mail.php

1 分钟后,它没有执行 PHP 文件中的命令,但是,我可以在系统日志中看到 cron 作业正在运行。

我用 ubuntu 操作系统运行我的本地虚拟机,并创建了相同的 cron 作业,执行相同的文件。 1 分钟后,我可以看到它执行了 PHP 文件中的命令,因为数据库上的数据已更新。

我真的很困惑为什么服务器上的 cron 作业没有执行 PHP 命令。 我被困在这个问题上。

首先查找 PHP 的位置:

which php

然后通过运行以下命令更新 crontab:

crontab -e

然后使用正确的 PHP 路径更新该行:

* * * * * root /usr/bin/php /var/www/html/cron/leave_mail.php

另请注意,您可以在路径之前指定用户。 希望这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM