新在Symfoob娱乐下载ny 2.2:流程组件增强
2013年1月10日·发表的法比安效力
警告:这篇文章是关于一个不受支持的Symfony的版本。ob娱乐下载其中一些信息可能是过时了。阅读最近的Symfony文档ob娱乐下载。
执行子流程从PHP是一个噩梦……当然,只有如果你想的是正确的。有很多事情可能出错,和PHP本身不帮助它有很多怪癖取决于您所使用的平台。这就是为什么我创造了过程组件几年前。和自那时以来,许多开发人员帮助我们增强和修复代码以使它正确。
Symfob娱乐下载ony 2.2,我们已经多次改进。
增量输出的过程
而不是使用run ()
执行一个过程,你可以start ()
它:run ()
是阻塞和等待的过程来完成,start ()
创建一个后台进程。从正在运行的命令得到反馈的一个方法是通过一个回调时开始/运行过程:
1 2 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载\组件\过程\过程;美元过程=新过程(ls lsa的);/ /当使用开始代替运行同样的规律美元过程- >运行(函数(美元类型,美元数据){如果(过程::做错了= =美元类型){/ /美元数据发送到错误输出}其他的{/ /美元数据发送到标准输出}});
但有时,使用一个回调是不可能的。Symfonob娱乐下载y 2.2,你仍然可以使用增量输出数据getIncrementalOutput ()
和getIncrementalErrorOutput ()
方法;他们返回新的输出自上次调用而getOutput ()
和getErrorOutput ()
返回完整的输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27日28
使用ob娱乐下载\组件\过程\过程;美元流程=数组();美元流程[]=新过程(ls lsa的);美元流程[]=新过程(“ps waux”);而(数(美元流程)>0){foreach(美元流程作为美元我= >美元过程){如果(!美元过程- >isStarted ()) {回声“流程开始\ n”;美元过程- >开始();继续;}回声美元过程- >getIncrementalOutput ();回声美元过程- >getIncrementalErrorOutput ();如果(!美元过程- >正在()){回声“流程停止\ n”;设置(美元流程(美元我]);}}睡眠(1);}
重启一个进程
在上一个示例中,您可能想要重新开始的一个过程,如果崩溃;您现在可以:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\过程\ProcessBuilder;如果(!美元过程- >正在()){如果(!美元过程- >isSuccessful ()) {美元克隆=美元过程- >重启();/ /……}}
正在运行的进程的状态
运行一组流程时,您可能需要重新启动过程,死亡(如在上一个示例)。但是当一个过程是不能够开始,是没有意义的重新启动它。如2.2,您可以检查一个进程的状态并采取相应行动:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
美元过程- >isSuccessful ();美元过程- >hasBeenSignaled ();美元过程- >hasBeenStopped ();美元过程- >正在();/ /新2.2年美元过程- >isStarted ();美元过程- >isTerminated ();如果(!美元过程- >正在()){如果(美元过程- >isStarted () & & !美元过程- >isSuccessful ()) {美元克隆=美元过程- >重启();/ /……}}
发表在#生活在边缘
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
Thomas Lallement is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now