【问题标题】:execute PHP AJAX call using cron jobs使用 cron 作业执行 PHP AJAX 调用
【发布时间】:2016-05-27 02:30:05
【问题描述】:

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

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

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

我的 cron 作业命令是 /usr/bin/wget https://www.example.com/updateScript.html。我也尝试将 udpateScript.html 更改为 PHP,但没有成功。有什么我可以做的建议吗?

【问题讨论】:

    标签: php linux cron-task


    【解决方案1】:

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

    // 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

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

    【讨论】:

      【解决方案2】:

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

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

      这是一个如何完成的示例: https://github.com/ariya/phantomjs/blob/master/examples/waitfor.js

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2016-04-15
          • 1970-01-01
          • 1970-01-01
          • 2012-07-04
          • 2021-02-02
          • 2023-03-10
          • 2012-03-04
          • 2013-08-31
          • 1970-01-01
          相关资源
          最近更新 更多