使用cron作业执行PHP AJAX调用

时间:2016-02-16 01:05:42

标签: php linux cron-task

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

我不想去那里,而是想使用cron作业安排日常任务。我不想在PHP中编写所有逻辑,因为JavaScript部分有点复杂。有没有办法让cron作业打开那个HTML页面以便我的脚本被执行?

我在SO中检查了几个问题,如下所示:Using cron jobs to visit url?但这对我不起作用。

我的cron job命令是/ usr / bin / wget https://www.example.com/updateScript.html。我也尝试将udpateScript.html更改为PHP,但它不起作用。关于我能做什么的任何建议?

3 个答案:

答案 0 :(得分:2)

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

// 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,因此您可能希望模仿浏览器对您的服务器的请求,例如thisthis

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

答案 1 :(得分:1)

crons不适合你,因为你需要执行JavaScript,但是,cron只是简单地提取代码bur不执行它。

如果您想将JavaScript用作处理器,可以考虑使用Phantom.js:http://phantomjs.org/

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

答案 2 :(得分:0)

Wget不会为你在页面上执行JavaScript:它必须在浏览器中完成(或者在服务器上可以这样做的任何东西)。所以对你而言,它要么重写PHP中的逻辑(这可能是非常痛苦的,但从长远来看非常有用),或者根据建议here尝试在服务器上设置一些东西。