【问题标题】:Stopping an infinite loop on a remote server PHP在远程服务器 PHP 上停止无限循环
【发布时间】:2011-09-23 09:12:55
【问题描述】:

我有一个简单的无限 for 循环,如下所示:

set_time_limit (0);
for (;;)
{
    ... //Doing some stuff including to write to a file
    sleep(300);
}

它正在我的服务器上运行。 (共享主机帐户)

我怎么能阻止它?

【问题讨论】:

标签: php infinite-loop


【解决方案1】:

杀死进程。假设您可以通过 ssh 访问控制台并且您的服务器在 linux 上运行:

ps -ef | grep php // to get a list of php-processes

kill [process-id] // kill the process by process-id

【讨论】:

  • 您认为我怎样才能通过 SSH 访问?服务器是 linux/Debian。
  • putty.org - 只需下载,输入服务器 IP 地址、您的用户名和密码,然后:瞧!
  • @oezi 我还有一个脚本在服务器上循环。我说的是Amazon ec2 服务器。要终止此脚本,请使用 ps -xsudo kill [proces_id]。只是告诉... :)
  • 部分共享主机不支持SSH,你可以试试phpshell.sourceforge.net你还需要把php.ini和phpshell脚本放在同一个目录下,去掉安全模式和禁用功能
【解决方案2】:

您可能想联系您的托管服务并要求他们终止您的脚本。您很可能没有执行访问权限或 ssh 访问权限。也许您应该在下次创建无限循环时建立退出程序的可能性。

【讨论】:

  • 以某种方式杀死它的好主意。打算放一个文件来读取。如果读取“假” - 死亡。
【解决方案3】:

我通过 SSH 登录并尝试终止该进程,但它似乎不起作用 - 可能是不正确的进程,因为那里有很多。

您总是可以重新启动 apache 作为最后的手段;这将解决它;-)

【讨论】:

    【解决方案4】:

    假设您正在使用共享托管服务器,并且无法访问命令行或 ssh 或托管支持团队...

    您最好的办法是使用您的网站管理面板来触发 php 重启。

    当您切换 php 版本/更改 php ini 参数(例如内存限制)时会发生这种情况

    【讨论】:

    • 这是一个很好的解决方案。需要指出的是,更改 php 版本可能会丢失扩展名
    【解决方案5】:

    您提到了写入文件。

    但是,如果您正在写入数据库,则可以使用数据库工具临时重命名会触发错误并停止脚本的字段。

    共享服务器的困境、快速开发和拼写错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多