【PHP进程锁定问题分析研究_PHP教程】教程文章相关的互联网学习教程文章

php – Symfony2和后台进程

我的Symfony 2.3项目中有一个类正在执行一些http请求并需要一些时间. 我想将此任务作为后台进程运行,以便服务器返回客户端的答案,后台进程继续运行. 你知道如何在Symfony做到这一点吗? 我找到了Process Component:http://symfony.com/doc/current/components/process.html,但我不确定我是否可以从那里运行一个类方法.解决方法:一种简单的方法是使用队列和symfony命令来处理队列,从而将繁重的工作与响应分开. http://symfony.com/...

在ruby中使用Blowfish加密字符串会返回比php中的相同进程更短的字符串【代码】

这让我很困惑. 当我尝试使用以下输入来加密Blowfish的字符串时:key =“一些关键”input =“输入字符串” 我得到以下结果:ruby: ["79af8c8ee9220bde"] php: 79af8c8ee9220bdec2d1c9cfca7b13c6我将从php应用程序接收字符串,所以我需要让这两个同步,但我不明白为什么php字符串会更长.我错过了什么? php代码:php > require_once 'Crypt/Blowfish.php'; php > $input = "input string"; php > $key = "some key"; php > $crypt = ne...

PHP fork进程 – 在父级中获取子输出【代码】

我想实现以下目标: 初始化一个数组.子进程将一些元素添加到数组中.父进程向数组添加一些元素.最后在退出之前,打印所有元素. 以下是我写的代码:<?php $values=array(); $pid = pcntl_fork(); if (!$pid) {sleep(2);$values[]="Put by child";exit(0); } $values[]="Put by parent"; pcntl_waitpid($pid, $status); print_r($values); ?>但是,它只打印一个值 – 由父级输出.有人可以解释一下这种行为并建议正确的代码吗? 问候,J.P...

如何使用名称启动PHP进程?

我有一个PHP脚本,它产生10到100个PHP脚本,以帮助共享一些计算的负载.问题是这个父PHP脚本在后台启动并且永远运行,所以它必须在某个时候关闭.在您点击父进程之前,盲目地关闭PHP进程可能是一项艰巨的任务. 有没有办法我可以用一个唯一的名称启动父PHP进程,如“Ping循环”,或者在顶层界面中识别它的其他方式? 我知道使用父级的PID创建守护程序或关闭脚本的替代方法.我问这个问题,希望避免这样做.解决方法:检查顶级PHP脚本使用ps axuf...

php守护进程可能的内存泄漏【代码】

我已经在php中编写了一个守护进程,并希望确保它不会泄漏内存,因为它将全天候运行. 即使是最简单的形式,守护进程的memory_get_peak_usage也会报告该脚本为每个循环消耗更多内存.另一方面,memory_get_usage不会增长. 问题是:我应该担心吗?我已经将守护进程剥夺了基本功能,但这仍然在发生.有什么想法吗?#!/usr/bin/php -q<?php require_once "System/Daemon.php"; System_Daemon::setOption("appName", "smsd"); System_Daemon::st...

php – Laravel-4:如何使用队列创建守护进程【代码】

我需要创建一个Laravel守护进程来从网上获取一些数据并将它们存储在数据库中.我想在Laravel中执行此操作以便使用Eloquent进行查询.我被告知要查看队列,但正如我在文档中看到的那样,如果您首先访问URL,则会调用队列.有没有办法启动队列并让它永远运行?队列是否可以在我的本地环境中工作?到目前为止,我有以下代码: routes.php文件:Route::get('daemon', function(){Queue::push('SendEmail', []);});SendEmail.php<?php class Se...

PHP Fpm进程正在查杀我的网站:进程被阻止状态为D.【代码】

经过几天的网络搜索,Stack Overflow,Google,.无处不在,我无法理解PHP-fpm在正常工作几小时后会发生什么. 问题描述: 我有一个Ubuntu 16.04 VPS,我已经安装了PHP-FPM和Nginx以及一个小型redis-server来存储会话.我有4个网站在PHP-fpm下运行.所有网站都很好,只有其中一个有这个问题. PHP-FPM使用套接字与Nginx通信. 工作了几个小时后,当我运行htop命令时,突然PHP-FPM进程无效并且状态为D.以下是htop命令输出的屏幕截图:在互联网上搜...

php – 管道关闭后,哪个信号发送到进程

我运行一个foreignprogram并将输出传递给outputcatcher.命令执行如下: $foreignprogram | outputcatcher 我想在outputcatcher中处理foreignprogram的退出.当foreignprogram退出时,outputcatcher也会退出.是否有任何信号表明outputcatcher接收到了我可以处理的信号?我尝试过SIGINT,SIGTERM和SIGHUP,但到目前为止还没有运气. 如果重要的话,ouputcatcher是用PHP编写的,我用pcntl_signal()处理信号解决方法:我认为这两个项目是两个独...

后台进程完成后启动PHP脚本?【代码】

我正在使用PDF2SWF转换PDF并使用XPDF转换索引..只需要执行时间非常高. 是否可以将其作为后台进程运行,然后在完成转换时启动脚本?解决方法:一般来说,php没有实现线程. 但是有一个ZF级可能适合你: http://framework.zend.com/manual/en/zendx.console.process.unix.overview.htmlZendX_Console_Process_Unix allowsdevelopers to spawn an object as a newprocess, and so do multiple tasks inparallel on console environments.T...

如何让子进程在PHP中回写其父进程的STDIN?【代码】

在PHP中,有没有办法让子进程分叉,pcntl_fork()直接将数据写回其父级的stdin?我不是指一个单独的管道 – stdin资源本身? (它必须是stdin,因为,简而言之,父进程正在做什么将无法正常工作,除非它可以将自己的stdin直接绑定到传入的数据 – 单独的管道将不起作用.)如:$pid = pcntl_fork(); if (!$pid) {// do fun child process stuff// write data back to parent's STDIN }解决方法:在Linux上(不知道这对于Unix来说通常会有多普遍...

php – 重新启动Apache kill后台进程【代码】

我有一个脚本startbg.php:echo `/usr/bin/php $dir/runbg.php >> $dir/logbg.txt 2>&1 &`;我从网上打电话(通过HTTP / Apache). 它在后台进程中运行runbg.php. 但是,如果我重新启动Apache(/etc/init.d/apache2 restart),后台进程将被终止. 无论如何我可以让后台继续运行吗?解决方法:您可以打开一个PHP’s internal webserver的实例(从PHP 5.4.0开始,CLI SAPI提供了一个内置的Web服务器.)在我的测试中杀死httpd.exe没有影响php.exe...

php – proc_open离开僵尸进程【代码】

以下脚本监视/ dev / shm / test以查找新文件并实时输出有关它的信息. 问题是当用户关闭浏览器时,inotifywait进程保持打开状态,依此类推. 有什么方法可以避免这种情况吗?<?php $descriptorspec = array(0 => array("pipe", "r"), // stdin is a pipe that the child will read from1 => array("pipe", "w"), // stdout is a pipe that the child will write to2 => array("pipe", "a") // stderr is a file to write to );$proc...

通过PHP API动态更改管理程序进程【代码】

我设置了Supervisor,用于管理我的工作流程.现在,我想通过使用PHP API动态更改进程(停止某些进程并启动新进程). 我发现这个library似乎对我正在尝试的东西很有用.具体来说,我使用this更改配置,使用this管理主管. 我已设置此库并具有以下示例代码,似乎运行良好(从here和here)<?php require './vendor/autoload.php'; use Supervisor\Supervisor; use Supervisor\Connector\XmlRpc; use fXmlRpc\Client; use fXmlRpc\Transport\Htt...

php – 将proc_open()获取的管道重定向到文件,以获取剩余的进程持续时间【代码】

比方说,在PHP中,我有很多单元测试.说他们需要一些服务才能运行. 理想情况下,我希望我的引导脚本: >启动这项服务>等待服务达到理想状态>将控制权交给选择的单元测试框架来运行测试>在测试结束时清理,适当地正常终止服务>设置一些方法来捕获服务中的所有输出,以便进行日志记录和调试 我目前正在使用proc_open()来初始化我的服务,使用管道机制捕获输出,通过检查输出来检查服务是否达到了我需要的状态. 但是在这一点上我很难过 – 如何...

没有子进程的PHP fork继承了父文件的描述符?

我正在尝试使用反引号运算符运行shell命令,但子进程继承php的打开文件描述符的事实是有问题的.有没有办法防止这种情况发生? 我正在运行PHP 5.1.2解决方法:我真正知道的唯一方法就是让孩子们在分叉后开辟自己的资源. 这里有一个相当不错的pcntl教程: http://hudzilla.org/phpwiki/index.php?title=Miscellaneous_topics http://hudzilla.org/phpwiki/index.php?title=Duplication_of_resources_when_forking