【问题标题】:How do I run a PHP script continuously on localhost?如何在本地主机上连续运行 PHP 脚本?
【发布时间】:2011-06-06 20:37:58
【问题描述】:

我有一个使用 API 抓取信息的脚本。我想要的是连续运行这个脚本来抓取数据并将其存储在我的本地机器上。我将机器配置为 localhost 并安装了 phpmyadmin 和 MySQL。

【问题讨论】:

  • 如果您使用的是 nix,您可以将脚本设置为 cron 作业。
  • 在 Windows 上,您可以使用计划任务,而不是 cronjob。

标签: php phpmyadmin localhost


【解决方案1】:

您可能希望从command line 运行它。将您的代码置于某种循环中以始终保持其运行,或将其安排为作为 cron 作业/计划任务运行。

【讨论】:

  • 这是一台 Windows 机器,我的 scrypt 处于循环状态,因此它将运行两个三个小时,但在 Internet Explorer 停止/如果 firefox 之后它会崩溃
  • 您还需要在重新启动时初始化脚本。我已经为 linux 系统上的守护进程做过这种事情。
  • @mathew:对于 Windows,使用 start 命令。要让它在启动时启动,您可以修改注册表。
【解决方案2】:

将您的主要代码(函数、类等除外)包装在此:

while (true) {

还有这个:

  sleep(2);
}

然后从命令行运行它,使用:

$ php myscript.php

如果使用 Windows,您必须手动将 php 添加到 PATH。我不知道 Windows(我一生都在使用 Mac),但我想你可以在我的机器的属性中做到这一点。 :)

【讨论】:

  • 我在启动这个脚本长时间执行时,一开始就添加了睡眠功能。但是由于睡眠功能,它抓取的数据数量减少了。那么还有其他选择吗??
  • 将 sleep 设置为较低的值,如 0.5,或完全删除它,导致您的脚本执行 DDoS 攻击。 :) 但请注意请求过多,因为您可能会因使用 API 而被踢出局。
  • 如何在命令行中添加路径??我的路径是 c:\\apache\wwww\
【解决方案3】:

了解set_time_limit,或修改php.ini 文件中的max_execution_time 值。

【讨论】:

    【解决方案4】:

    使用批处理文件循环代替 php 循环。 .

    这可以解决任何 set_time_limit 、最大内存等问题。如果php崩溃了,没问题,会立即启动一个新的实例。

    @echo off
    :loop
    php myScrapeScript.php
    goto loop;
    

    【讨论】:

      猜你喜欢
      • 2015-02-05
      • 2017-05-18
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 2020-08-31
      • 1970-01-01
      相关资源
      最近更新 更多