jjzjj

pcntl_fork

全部标签

PHP:pcntl_signal 有什么用?

我发现了一大块我以前没见过的代码:declare(ticks=1);pcntl_signal(SIGINT,array($this,"catchSignal"));pcntl_signal(SIGTERM,array($this,"catchSignal"));查了PHP文档中的函数,还是不明白这个是干什么用的。请帮助我了解它的用途以及应在何处实现的一些示例。 最佳答案 declare声明声明在每个“tick”检查事件。一个“滴答”大致等于一行代码。这在命令行PHP脚本中使用,因此您可以捕获中断并优雅地关闭脚本,而不是仅仅杀死它。p

php - 如何使用 PCNTL 并行调用 php 函数

我对不同的服务器有大约10个不同的请求,并且用于按顺序获取与我网站中的函数调用相关的响应。现在,我想针对不同的服务器请求并行调用我的函数。一旦我从任何服务器获得第一个响应,就想停止剩余的进程。目前我这样调用我的函数:my_launch(1);my_launch(2);my_launch(3);my_launch(4);my_launch(5);my_launch(6);my_launch(7);my_launch(8);my_launch(9);my_launch(10);这是顺序执行的;如何使用PCNTL并行运行此代码? 最佳答案

PHP内存泄漏和 fork

我试图避免PHP中的内存泄漏。当我创建一个对象并在最后取消设置时,它仍在内存中。未设置的看起来像:$obj=NULL;unset($obj);这仍然无济于事。我的问题是当我fork进程并且对象将在子线程中创建和销毁时会发生什么?这会一样吗?或者有什么其他方法可以释放内存吗?这是导入脚本,它将消耗几千兆内存。 最佳答案 PHP5.3有一个垃圾收集器,可以收集循环引用。可能值得一试:gc_enable();classA{publicfunction__construct(){$this->data=str_repeat("A",1024

PHP sleep 、pcntl_signal 和滴答声

好的,所以我一直在尝试获取ProcessSignals使用PHP脚本。我遇到了很多我不确定发生了什么的事情,而且我觉得文档没有很好地解释它。假设我按照registeringsignals上的示例进行操作:但是,在我的sig_handler函数中,我在末尾添加了一个exit(1)。echo"Done\n";还会被执行吗?我已经尝试过类似的东西,尽管是在类结构中,而且它只是在我的sig_handler被调用之前。我的类__construct调用函数registerSignals:privatefunctionregisterSignals(){if(function_exists("pcn

php - 无法在 mac high sierra 的自制软件上找到 pcntl

我一直在尝试使用命令在MacOSHighsierra中使用自制软件安装pcntl扩展brewinstallhomebrew/php/php71-pcntlbrewinstallhomebrew-php/php71-pcntl还尝试使用php54、55、56、70我收到错误正在更新自制软件...Error:Noavailableformulawiththename"homebrew/php/php7-pcntl"==>Searchingforapreviouslydeletedformula(inthelastmonth)...Warning:homebrew/phpisshallowc

php - php 中的 pcntl_exec 和 exec 有什么区别?

我已经在http://us1.php.net/manual/en/function.pcntl-exec.php阅读了文档和http://php.net/manual/en/function.exec.php但我真的说不出真正的区别是什么。 最佳答案 Thepcntl_exec()functionworksexactlylikethestandard(unix-style)exec()function.ItdiffersfromtheregularPHPexec()functioninthattheprocesscallingthe

php - 如何在不使用 brew 的情况下在我的 Mac OSX 上安装 PHP 扩展 'pcntl'

因此,我正在尝试在我的MacBookPro(HighSierra10.13.4)上安装pcntl扩展。我试着按照我可以在网上找到的指南进行操作,但是它们都已经过时了,因为Homebrew决定将所有php包移动到它们的核心,并在此过程中删除其中的一些。(https://github.com/Homebrew/homebrew-php,WTF自制软件?!)pcntlphp扩展就是其中之一。这是在三月底完成的,最近才完成。从那以后就没有人问过这个问题了。有没有其他方法可以在Mac上安装pcntl扩展? 最佳答案 他们没有放弃他们决定默认使

php - pcntl_wait 未被 SIGTERM 中断

根据pcntl_wait的PHP文档,Thewaitfunctionsuspendsexecutionofthecurrentprocessuntilachildhasexited,oruntilasignalisdeliveredwhoseactionistoterminatethecurrentprocessortocallasignalhandlingfunction.但是,当我运行以下代码并使用kill-sSIGTERM[pid]将SIGTERM发送到父进程时,信号处理程序仅在子进程退出后被调用(即我必须等待sleep结束。pcntl_wait()不应该被SIGTERM中断吗?

php - 为什么 PHP 挂起,当 bash 调用 fork 时

我正在从php调用一些bash代码,但即使我forkbash(使用&),php也不会在完整的bash完成之前完成。这段代码:HTMLSTARTHTMLEND将不会在浏览器中显示任何内容,beforeafter30秒。我真正想要的是从php启动一个GUI应用程序,它应该继续运行。 最佳答案 关闭sleep调用中的所有文件描述符以允许它分离:否则,输出文件描述符仍处于打开状态,并且PHP仍在尝试等待接收其输出,即使进程不再直接附加也是如此。这在运行时工作正常,立即退出但留下一个sleep过程:$timephp5test.php;psau

PHP AMQP Consume() fork 做实际工作

我正在寻找一个从RabbitMQ队列消费(使用PECLAMQP模块)然后fork以完成实际工作的PHP脚本。我有代码@https://gist.github.com/giggsey/6666e67bb0e090eeb5f0但是当我运行它时,我得到:11296Key:USER.12392ObjectLength:74Forked11296at2013-03-1914:16:2211277ack()PHPFatalerror:Uncaughtexception'AMQPConnectionException'withmessage'Connectionresetbypeer'intmp/f