【问题标题】:Kill Running PHP Script via Process ID?通过进程 ID 杀死正在运行的 PHP 脚本?
【发布时间】:2010-12-23 19:34:19
【问题描述】:

我通过 AJAX 向几个 PHP 脚本发出大量 GET 请求。我想询问有关如何杀死当前正在运行的 PHP 脚本(在后台)的实施建议。

有没有办法在 PHP 脚本运行时获取进程 ID,然后我可以通过 shell/cmd 等杀死该进程?

有没有更好的办法?

【问题讨论】:

  • 哪个操作系统? Windows、Unix?
  • 目前,Windows - 拥有一个可移植的解决方案会很棒。如果没有,只需 Windows。

标签: php process process-management pid


【解决方案1】:

我并没有完全明白你想要做什么,但我认为你可能已经到达了网络堆栈的一部分,这是一个死胡同。如果您发出大量 ajax 请求,您肯定会杀死您的服务器,因为它无法处理“无限”数量的连接。

我认为您可能需要重新考虑您的架构。您可能想阅读COMETlong polling

【讨论】:

  • 我只发出 5/6 个 AJAX 请求,同时运行大约 5/6 个脚本。这不是PHP脚本同时运行的数量问题!
【解决方案2】:

PHP 是否是一个自己的进程将取决于 PHP 和 Web 服务器的配置方式。但即使是这样,也很难捕获正确的 PHP 进程来杀死。

如果您在 PHP 脚本中知道这是需要终止的进程,您可以使用getmypid() 或在那里的用户贡献说明中找到一些内容。

我仍然不完全了解情况。为什么你需要杀死他们?

【讨论】:

  • 说一个很长的进程正在运行(几个小时) - 你记得你没有正确设置配置变量,那么杀死这个进程会很方便,在我的例子中包括杀死所有 PHP脚本、所有 SQL Server 实例、其他外部程序等
  • 你说得对,这对我来说可能是个问题,因为我将 PHP 作为 Apache 模块运行 - 查看我的任务列表后,我只能看到 httpd.exe 正在运行。
  • 不会重新启动服务器来完成这项工作吗?也许设置一个或多个可以独立重启的虚拟机对你来说是正确的?
  • 我认为这可能是我唯一的解决方案。谢谢佩卡! :)
猜你喜欢
  • 2016-10-08
  • 1970-01-01
  • 2013-07-24
  • 2013-11-11
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 2020-01-18
相关资源
最近更新 更多