Wordpress插件禁用事件


Wordpress plugin disable event

我正在编写一个Wordpress插件,该插件在启动时运行PHP脚本,并使用WebSockets和日志连接持续侦听事件。

例如

shell_exec('php restserver.php >restserver.log 2>&1 &');

所提到的脚本在Wordpress API之外。我知道使用execshell_exec是一种极端的方法(通常是一个难题的答案)。

我已经设法记录了restserver.php进程ID,以便在插件被禁用时能够杀死它,并且在插件重新启动时不会重新启动脚本。

总之。。。

  1. 有没有更好的方法来运行独立于wordpress的后台php进程
  2. 是否有"最佳实践"方法来检测插件禁用事件并在此之前启动终止进程命令

EDIT:第2个问题的秘密显然在于在register_activation_hook()之后使用register_deactivation_hook()来注册您的类或产生魔力的函数。

不管怎样,它对我很管用。任何关于以正确方式使用exec()的进一步信息都是受欢迎的。

有一个名为GearMan的unix服务器,它是为并行执行各种任务而设计的。它有一个PHP客户端库,允许您启动工作程序并监视其执行,包括后台作业。因此,这将是一种(优雅的)方法,但它需要安装GearMan服务器和客户端库,这意味着管理访问。

另一种简单的方法是为此添加一个cronjob。这只需要访问cronjob文件并要求cronjob守护进程加载新设置。出于任务目的从cronjob启动PHP比从exec调用启动PHP更有意义。