任务:当我的PHP CLI脚本被“杀死” /关闭时,我需要能够执行一些代码(通常由我关闭其窗口,或者从PC关闭或重新启动)。理想情况下,我还希望能够指示OS等待其执行某些重要工作的最后一部分,但是我基本上已经放弃了这个“梦想” ...
问题:在PHP中处理此类信号显然是通过“ PCNTL”扩展名完成的,根本不适用于Windows !尽管PHP被称为“跨平台”。
尽管我所做的全部工作是使其与操作系统完全无关(不,这并不意味着“可以在任何Linux发行版上运行”,而是所有当前/受支持的操作系统,或者至少是Windows和Mac),在这种情况下,我将接受Windows特定的解决方案。不高兴,但仍然...
答案 0 :(得分:0)
这不是解决您问题的确切方法,但也许可以解决。 如果您只想关闭一些手柄,连接等。
此解决方案非常有限
好的一面是,该解决方案一旦工作就应该完全独立于目标操作系统。
您问题的第二个解决方案是在Windows和Linux上使用Docker,并将您的应用程序构建为docker容器,该容器从具有扩展名PCNTL的linux发行版启动,或者使用任何PHP docker映像启动FROM并安装通过创建特定的Dockerfile自行扩展。 无论应用程序是在Windows还是Linux上运行,采用这种方法都可以使用PCNTL扩展。
docker中的PHP应用程序可以使用安装在主机系统上的php从命令行运行,几乎具有与独立php应用程序相同的便利。因此,Docker方法似乎更好。