文档章节

symfony2 Process 组件的学习笔记

汤汤圆圆
 汤汤圆圆
发布于 2015/06/20 09:49
字数 340
阅读 237
收藏 0

安装

composer require "symfony/process:2.7.1" ##描述 process组件是可以开启一个子进程 去执行一个命令 ##例子 use Symfony\Component\Process\Process; $process = new Process('ls -lsa'); $process->run(); // executes after the command finishes if (!$process->isSuccessful()) { throw new \RuntimeException($process->getErrorOutput()); } echo $process->getOutput();

实时输出命令的输出

use Symfony\Component\Process\Process;
$process = new Process('ls -lsa');
$process->run(function ($type, $buffer) {
    if (Process::ERR === $type) {
        echo 'ERR > '.$buffer;
    } else {
        echo 'OUT > '.$buffer;
    }
});

异步执行

$process = new Process('ls -lsa');
$process->start(); //在这里开启一个子进程去执行
// ... do other things
//一定要调用wait方法;要不然上面的子进程会成为一个僵尸进程
$process->wait(function ($type, $buffer) {
    if (Process::ERR === $type) {
        echo 'ERR > '.$buffer;
    } else {
        echo 'OUT > '.$buffer;
    }
});

停止进程 $process->stop(3, SIGINT); 设置超时时间 $process->setTimeout(3600); 发送一个信号(windows系统无效) $process->signal(SIGKILL); 设置闲置超时(即命令没有输出) $process->setIdleTimeout(60);命令60s没有输出东西就会超时 如果超时会抛出 RuntimeException 异常

##未明白的问题

在文档中有一个ProcessBuilder类用来创建一个跨平台命令;但是有点不理解官方的给的例子

use Symfony\Component\Process\ProcessBuilder;

$builder = new ProcessBuilder();
$builder->setPrefix('/usr/bin/tar');

// '/usr/bin/tar' '--list' '--file=archive.tar.gz' 就是不明白为什么会输出这样的字符串;
echo $builder
    ->setArguments(array('--list', '--file=archive.tar.gz'))
    ->getProcess()
    ->getCommandLine();

// '/usr/bin/tar' '-xzf' 'archive.tar.gz'
echo $builder
    ->setArguments(array('-xzf', 'archive.tar.gz'))
    ->getProcess()
    ->getCommandLine();

© 著作权归作者所有

汤汤圆圆

汤汤圆圆

粉丝 11
博文 82
码字总数 26104
作品 0
昌平
程序员
私信 提问
symfony2 process组件的一些问题

这是官方给的解释 官方: http://symfony.com/doc/current/components/process.html To make your code work better on all platforms, you might want to use the ProcessBuilder class ins......

汤汤圆圆
2015/06/20
578
0
全栈型框架和组件式框架有什么区别?

听说: laraverl 是全栈型框架、 symfony2 是组件式框架 全栈型框架和组件式框架到底有什么区别?

红石头
2014/04/07
2.9K
2
介绍下php各种框架呗?

目前在做php开发,在用的框架主要是 symofny2,在学Yii 可是目前圈内各种框架实在太多了,但是不同框架肯定应用的场景不一样, 想听听各位的意见,学习分个先后。 多谢! 我先说自己知道的两...

bigTreee
2015/01/24
2.2K
5
Mini 容器学习笔记1——环境搭建(基础篇)

一. 环境下载 到Mini 容器的官方网站下载NLite框架的二进制文件,下载并解压后就可以了。 我们使用NLite框架需要用到下面的文件: NLite.dll(必要) 二. 建立NLite应用程序 新建一个控制台应用...

netcasewqs
2011/08/26
62
0
使用 HAProxy, PHP, Redis 和 MySQL 轻松构建每周上亿请求Web站点

本案例是由Antoni Orfin写的客座文章,他是Octivi的联合创始人和软件架构师。 在文章中,我将向您展示我们开发的基于HAProxy,PHP,Redis和MySQL的非常简单的架构的方法,它可以无缝地处理约...

xxx2xxx
2014/11/07
19.5K
29

没有更多内容

加载失败,请刷新页面

加载更多

SIPC的保全存证变现应用才是先见之明

Facebook发起的Libra在接连退群后终于在联盟链上线前官宣成立联盟,同时Telegram公链TON在主网上线前被美国SEC要求退回私募非法所得。两个都拥有活跃用户数上亿的社交平台,一个以1000万美元...

SimpleChain
9分钟前
1
0
Node_初步了解(3)回调,作用域,上下文

本文转载于:专业的前端网站➧Node_初步了解(3)回调,作用域,上下文 1. 1 //回调:回调是异步编程最基本的方法,node.js需要按顺序执行异步逻辑的时候,一般采用后续传递的方式,将后续逻辑...

前端老手
9分钟前
1
0
好程序员Java教程分享Java的五大特点

好程序员Java教程为大家分享Java的五大特点希望对初学者有所帮助。 一、Java的(五大)特点: 1.简单性 相对于c语言来说 c语言的核心 指针(保存地址)*p Java中没有指针的概念(使用的是引用概念...

好程序员官网
11分钟前
1
0
移动端rem适配各种屏幕字体

在页面中引入这个js文件,可以实现各个屏幕的字体自适应: (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : ......

流年那么伤
13分钟前
2
0
2019我最喜爱的绿色应用活动投票开始,谁能突出重围?

在去年第一届软件绿色联盟开发者大会上,共有36个绿色应用荣获“2018年度我最喜爱的绿色应用”奖项。活动得到了消费者、开发者与应用厂商的一致好评,刚过完十一假期就有小伙伴们后台留言,问...

软件绿色联盟
24分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部