【问题标题】:How to run PHP script on server without needing a web browser如何在不需要 Web 浏览器的情况下在服务器上运行 PHP 脚本
【发布时间】:2017-03-14 23:20:27
【问题描述】:

我将 php 用于使用图形 API 的 Facebook 机器人。脚本包含 get 和 post 请求等,但为了运行脚本,我必须在浏览器中访问 URL,例如我使用 xammp 作为本地主机,所以我必须经常在浏览器中打开 127.0.0.1。当我转到网页时,脚本运行一次。我希望脚本每 x 秒运行一次,而我现在要做的是刷新 x 秒的标题。这意味着浏览器重新加载页面,并且脚本每隔 x 秒再次运行一次。

我想要的是让我的服务器自行执行此操作,而无需客户端访问网页。我应该使用某种 php 技术吗?

附带说明,当我在 php 中使用带有图形 API 的 webhook 时,我不需要打开浏览器窗口。这一切都只使用服务器运行。

【问题讨论】:

  • 您有 2 个选项。如果您想使用 AWS 或已经使用 AWS,您可以在源目录中使用带有 cron.yaml 文件的 SQS 服务。另一种选择是安装 cron。我不确定你是否可以在 Windows 机器上做到这一点。
  • 如果您使用 Heroku,因为它与大多数其他服务器完全不同,您应该使用 Heroku 标记您的问题

标签: php facebook-graph-api browser graph server


【解决方案1】:

使用 Cron 作业和 PHP 命令行来执行您的脚本。

【讨论】:

  • 有没有办法运行跨作业 heroku 或者我需要一个 cpanel 的东西,不管他们叫什么
  • @EthanSK Heroku 有一个调度程序,如果我理解评论的话
  • 看起来它有一个调度程序:devcenter.heroku.com/articles/scheduler 也用于更精确的执行:devcenter.heroku.com/articles/…
  • 嗯。 Cron 作业不工作。我忘了提到我必须登录 facebook,它使用缓存让我保持登录状态。这会阻止 cronjobs 工作吗?
【解决方案2】:

如果您计划每 x 秒 (x small ) 运行一次脚本,那么最好的选择是使用无限循环运行一次脚本,然后 sleep () 在继续执行之前暂停脚本 x 秒.

例如bot.php 必须是这样的

#!/usr/sbin/php
<?php
function run_bot (){
    ...
 }

 while  ( 1 ){
      run_bot ();
      sleep(x);
 }

然后在 shell 中输入:

 chmod +x bot.php

 nohup ./bot.php &

【讨论】:

    猜你喜欢
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 2021-09-04
    • 1970-01-01
    相关资源
    最近更新 更多