草庐IT

PHP CLI 进程在完成后不会终止

我在一个PHP文件中有这个:echoshell_exec('nohup/usr/bin/php-f'.CRON_DIRECTORY.'testjob.php>/dev/null2>&1&');在testjob.php中我有:file_put_contents('test.txt',time());exit;这一切都运行得很好。但是,如果我进入流程,它不会在运行后终止testjob.php。 最佳答案 (由于stackoverflow仍然不允许我发表评论,所以必须将此作为答案而不是评论发布...)适合我。我完全按照描述制作了testj

php - 什么可能导致 "exceeded process limit"错误?

大约一周前我推出了一个网站,我向邮件列表发送了一封电子邮件,告诉每个人该网站已经上线。紧接着网站就崩溃了,一般错误日志中充斥着“超出进程限制”的错误。从那时起,我就尝试真正清理大量代码并尽量减少数据库连接。我仍然会每天在错误日志中看到一次该错误。是什么导致了这个错误?我试着调用虚拟主机,他们说这与我的代码有关,但无法指出代码有什么问题或哪个页面导致了错误。谁能给我更多信息?例如,什么是流程,我应该有多少个流程? 最佳答案 哇。大问题。显然,您的apache童工进程已达到极限。要大致了解您可以创建多少个,请使用top获取一个http进

php - ignore_user_abort 并在 php 中重定向?

我的设置与这里的人非常相似:PHPBackgroundProcesses即一个很长的脚本,最多需要10分钟。但是,我需要在脚本运行时将调用脚本的人重定向回主页。换句话说,我需要这样的用户体验:点击更新按钮脚本开始执行,最多可能需要10分钟用户被立即重定向回主页仅使用PHP有可能吗?我想我需要ignore_user_abort(true);set_time_limit(0);但是我该如何重定向用户呢?我不能使用javascript,因为输出只会以较长的增量写入页面,而且我希望立即进行重定向。我可以使用标题吗?或者这会把事情搞砸吗?或者,我可以使用cron作业方法,但我在制作cron作业或

php soap :ServerServer was unable to process request. ---> 序列不包含任何元素

我需要使用CURL将XML作为soap请求发送。我使用创建了xml$xml="看起来像4dfdf34abvabc1eexfsTest12345Peter'sTest7301LennoxAveUnitE3LosAngelesCA90010US858-449-8022lshaules@mercatismedia.comElizabethShaulesUSPSFirstClassMailPrepaid947XXX1我正在使用以下代码发送CURL请求$url='http://someurl.com/Contracts.asmx';$curl=curl_init();curl_setopt($c

php - 在 Windows 上的 PHP 中执行并获取 pid 后台进程

我在Windowsapache服务器的后台启动了一个进程。index.php如下:test.php下面是:当时想获取pidwhichphp-ftest.php。当我启动index.php时,我可以在tasklist命令行的输出中看到新的php.exe进程。如何获取此后台进程的pid。谢谢。 最佳答案 这将在使用wmic执行任务后输出ProcessID。然后您可以将其存储在session或cookie中以在页面之间传递。$cmd='wmicprocesscallcreate"C:/xampp/php/php.exe-f/path/to

php - 在流中读取实时整个输出

注意:此帖与此post有区别他们接受的答案只是一次阅读每一行。我必须在服务器端切割3D模型以进行3D打印,这个过程会花费一些时间。所以我要给用户展示流程,我用redis来存储流程。我想每0.5秒刷新一次进程。比如sleep0.5sec,每次读取pip中的所有内容并处理。现在我已经尝试了以下两个,第一个将一直保持到完成。第二种使用while不是一个正确的方式,它会一直写redis会导致clientreadprocessrequesthold到最后。我试过这两个:第一个将保持到命令完成。$descriptorspec=array(0=>array("pipe","r"),1=>array(

php - 使用 Boost::Process 运行 php 命令

我尝试运行PHP脚本并从stdout获取输出,代码如下所示:usingnamespaceboost::process;std::stringexec="php";std::vectorargs;//Imusttothrowtheexebyargumentargs.push_back("php");args.push_back("a.php");contextctx;ctx.stdout_behavior=capture_stream();childc=launch(exec,args,ctx);pistream&is=c.get_stdout();stdout中没有信息,但在stder

php - 如何在 Symfony2 应用程序的 Controller 中执行命令并在 Twig 模板中实时打印输出

我需要在我的Symfony2应用程序的Controller中执行一个持久的命令,并实时向用户返回终端的输出。我读过这个:http://symfony.com/doc/current/components/process.html#getting-real-time-process-output我不知道如何在Twig模板中实时打印终端输出。编辑:感谢Matteo的代码和用户的评论,最终实现是:/***@Route("/genera-xxx-r",name="commission_generate_r_xxx")*@Method({"GET"})*/publicfunctiongenera

php - 调试挂起的php

我有一个偶尔挂起的phpweb应用程序。当我导航到该页面时,它只会坐在那里尝试加载几个小时,即使最大执行次数是210。这是一个在代理后面使用curl来下载东西的应用程序。错误报告设置为全部,但这并不重要,因为页面是空白的并且挂起。我找不到任何关于调试挂起的PHP进程的信息。 最佳答案 上次我检查过,HTTP/IO操作发生在php时间之外,因此CURL可能正在死亡或超时。它的IO,所以php只是抛出到某个系统库,然后调用“select”等待它返回。如果它不回来..php代码甚至不会循环,因此甚至不知道它不会回来。

php - 如何实现单处理模式运行php脚本?

我有cron作业-php脚本,它在5分钟内调用一次。我需要确保之前调用的php脚本已完成执行-不想混合正在处理的数据。我曾经应用过三种方法:创建包含运行状态标志的辅助文本文件。执行的脚本分析文件的内容并在标志设置为true时中断。这是最简单的解决方案,但每次我创建这样的脚本时,我都觉得我又发明了一辆自行车。是否有任何众所周知的模式或最佳实践可以满足大多数需求?添加UNIX服务。这种方法最适合cron作业。但开发和测试UNIX服务更耗时:需要良好的bash脚本知识。使用数据库跟踪流程。很好的解决方案,但有时不鼓励使用数据库-不想发明自行车,希望已经有一个很好的灵活解决方案。也许您对如何管