无法让我的 cURL Cron 作业启动 PHP 脚本

时间:2021-05-23 20:46:41

标签: php curl cron

我是编写 Cron 作业的新手,我似乎无法启动我的 PHP 脚本。我当前的 Cron 如下所示:

/usr/local/bin/curl http://{my-url}/ajax.php?cron=execute

我想我可以使用字符串查询和 cURL 来执行我的 ajax.php 文件中的特定函数,例如:

if(isset($_GET['cron']) && $_GET['cron']=='execute'){
   populate_new_csv();
}

populate_new_csv() 函数当前在前端使用 AJAX 函数执行,以从 API 提取数据并生成填充有该数据的 .CSV 文件。我也在尝试通过 cron 工作来完成这项工作,但我的知识有点不足,因此将非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

感谢@user3783243 和@Roadowl 我终于能够使用 CRON 执行带有查询字符串的 php 函数/脚本。只是想发布我如何找到我的解决方案(以及它是什么)。

我首先通过 openSSH 访问我的网站并启动 crontab。我以 >> /home/{my_user}/public_html/cronerror.txt 结束每个 CRON,以便我可以记录任何错误。

我在 txt 中写下了所有我想测试的 CRON 作业示例,并一一测试。以下是一些示例:

  • * * * * * /usr/local/bin/curl "http://{my_url}/ajax.php?cron=execute" >> /home/{my_user}/public_html/cronerror.txt
  • * * * * * curl -s http://{my_url}/ajax.php?cron=execute >> /home/{my_user}/public_html/cronerror.txt
  • * * * * * curl -s "http://{my_url}/ajax.php?cron=execute" >> /home/{my_user}/public_html/cronerror.txt
  • * * * * * wget "http://{my_url}/ajax.php?cron=execute" >> /home/{my_user}/public_html/cronerror.txt

前三个在 cronerror.txt 文件中产生了 301 错误,但是最后一个使用 wget 而不是 curl 的示例工作正常。正如@Roadowl 所指出的,整个 URL 必须包含在引号中。