我为我的客户创建了一个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,但它不起作用。关于我能做什么的任何建议?
答案 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,因此您可能希望模仿浏览器对您的服务器的请求,例如this或this。
我希望你有一些想法,祝你的项目好运。
答案 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尝试在服务器上设置一些东西。