我正在编写一个 Wordpress 插件,它在启动时运行 PHP 脚本,并使用 WebSocket 和日志连接连续监听事件。
例如
shell_exec('php restserver.php >restserver.log 2>&1 &');
提到的脚本在 Wordpress API 之外。我知道使用 exec
或 shell_exec
是一种极端的方法(通常是对一个破问题的回答)。
我已经设法记录了 restserver.php 进程 ID,以便在插件被禁用时能够将其杀死,并且在插件重新启动时不会重新启动脚本。
简而言之...
- 有没有更好的方法来运行独立于 wordpress 的后台 php 进程?
- 是否有“最佳实践”方法来检测插件禁用事件并在此之前启动终止进程命令?
编辑:问题 2 的 secret 显然在于使用 register_deactivation_hook()
在 register_activation_hook()
之后,注册您的类或函数。
无论如何它对我有用。欢迎提供有关正确使用 exec()
的更多信息。
最佳答案
有一个名为 GearMan 的 unix 服务器它专为并行执行各种任务而设计。它有一个 PHP 客户端库,允许您启动工作人员并监视他们的执行,包括后台作业。所以这将是一种(优雅的)方法,但它需要安装 GearMan 服务器和客户端库,这意味着管理访问。
另一种简单的方法是添加 cronjob为了这。这只需要访问写入 cronjob 文件并要求 cronjob 守护进程加载新设置。为了您的任务目的,从 cronjob 启动 PHP 比从 exec
调用启动它更有意义。
关于php - Wordpress 插件禁用事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12185685/