使用 cron 作业执行 PHP AJAX 调用


execute PHP AJAX call using cron jobs

我为我的客户创建了一个HTML页面,以便每次他去那里时,都会执行一个脚本来更新数据库中的一些数据。一旦他登陆该页面,就会对Google API进行AJAX调用,返回一些结果,然后执行一些PHP脚本以更新数据并将其插入数据库中。例如,如果他去 http://www.example.com/updateScript.html,上述所有情况都会发生。

与其让他去那里,我想使用 cron 作业安排日常任务。我不想用PHP编写我所有的逻辑,因为JavaScript部分有点复杂。cron 作业有什么方法可以打开该 HTML 页面以便执行我的脚本?

我在SO中检查了几个问题,例如以下问题:使用cron作业访问url? 但这对我不起作用。

我的 cron job 命令是/usr/bin/wget https://www.example.com/updateScript.html。我也尝试将udpateScript.html更改为PHP,但没有用。对我能做什么有什么建议吗?

可悲的是,cron 无法在页面上执行 javascript。但是,既然你说你需要建议,你可能想看看PHP的cURL。您可以使用cURL在PHP中访问其他网站。您可以使用它执行很多协议,您需要的协议是 GET .一个例子是在这个网站上。

// Get cURL resource
$curl = curl_init();
// Set some options - we are passing in a useragent too here
curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => 'http://testcURL.com/?item1=value&item2=value2',
    CURLOPT_USERAGENT => 'Codular Sample cURL Request'
));
// Send the request & save response to $resp
$resp = curl_exec($curl);
// Close request to clear up some resources
curl_close($curl);

此外,由于您要访问的网站包含javascript,因此您可能希望模仿浏览器向服务器请求的方式,例如这样或这样。

我希望你有一些想法,祝你的项目好运。

crons 不适合你,因为你需要执行 JavaScript,但是,cron 只是拉取代码 bur 不会执行它。

如果你愿意使用 JavaScript 作为处理器,你可以考虑使用 Phantom.js: http://phantomjs.org/

以下是其完成方式的示例:https://github.com/ariya/phantomjs/blob/master/examples/waitfor.js

Wget 不会在页面上为你执行 JavaScript:这是必须在浏览器中完成的事情(或者任何可以在服务器上起作用的东西(。因此,对您来说,要么重写PHP中的逻辑(这可能非常痛苦,但从长远来看非常有益(,要么尝试根据此处的建议在服务器上设置一些东西。