azurre/php-shell
Composer 安装命令:
composer require azurre/php-shell
包简介
A convenient none blocking asynchronous shell
README 文档
README
This small and easy to use PHP shell make it able to run commands as non blocking asynchronous jobs
Installation
Install composer in your project:
curl -s https://getcomposer.org/installer | php
Require the package with composer:
composer require azurre/php-shell
Usage
Simple example
$loader = require_once __DIR__ . '/vendor/autoload.php'; use Azurre\Component\System\Shell; $cmd = 'ls -lwa /tmp'; echo Shell::create()->run($cmd);
Output
total 180
drwxrwxrwt 11 root root 4096 Jul 4 23:21 .
drwxr-xr-x 22 root root 4096 Jun 10 16:23 ..
drwxrwxrwt 2 root root 4096 Jun 10 16:23 .ICE-unix
drwxrwxrwt 2 root root 4096 Jun 10 16:23 .X11-unix
drwxrwxrwt 2 root root 4096 Jun 10 16:23 .XIM-unix
drwxrwxrwt 2 root root 4096 Jun 10 16:23 .font-unix
-rw------- 1 www-data www-data 0 Jul 1 21:21 239315d1a4f341c8b52.14168329mUCCHL
-rw-r--r-- 1 www-data www-data 6468 Jul 1 21:18 416205d1a4e5fe8e166.51692428EFpYWQ
-rw-r--r-- 1 www-data www-data 6469 Jul 1 21:21 443675d1a4f3ce6efd0.08860101uETZWS
-rw-r--r-- 1 www-data www-data 6416 Jul 1 21:26 494485d1a503c71cfd8.3817705715MVk4
-rw-r--r-- 1 www-data www-data 6468 Jul 1 21:19 519335d1a4eba5a2ef8.14398347CWkGkb
-rw------- 1 www-data www-data 0 Jul 1 21:27 575735d1a508060a080.18275551cZg15T
Background tasks
$shell = new Shell; $shell->runAsync('ping -c 5 127.0.0.1'); echo "Start background task\n"; while($shell->isProcessRunning()) { echo 'Working...' .PHP_EOL; sleep(1); } echo $shell;
Output
Start background task
Working...
Working...
Working...
Working...
Working...
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.020 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.022 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.015 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.023 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.019 ms
--- 127.0.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4099ms
rtt min/avg/max/mdev = 0.015/0.019/0.023/0.006 ms
Error handling
$shell = new Shell; $shell->run('ls /A/1/2/3/4')->waitForProcess(); if ($shell->getExitCode() !== Shell::NO_ERROR) { echo "\nExit code: {$shell->getExitCode()}\n"; echo "Error: {$shell->getStdError()}\n"; } else { echo $shell->getStdOut(); }
Output
Exit code: 2
Error: ls: cannot access '/A/1/2/3/4': No such file or directory
License
统计信息
- 总下载量: 140
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-03-11