amphp / process
基于 Amp 和 Revolt 的纤维感知进程管理器。
v2.0.3
2024-04-19 03:13 UTC
Requires
- php: >=8.1
- amphp/amp: ^3
- amphp/byte-stream: ^2
- amphp/sync: ^2
- revolt/event-loop: ^1 || ^0.2
Requires (Dev)
- amphp/php-cs-fixer-config: ^2
- amphp/phpunit-util: ^3
- phpunit/phpunit: ^9
- psalm/phar: ^5.4
- 2.x-dev
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v2.0.0-beta.7
- v2.0.0-beta.6
- v2.0.0-beta.5
- v2.0.0-beta.4
- v2.0.0-beta.3
- v2.0.0-beta.2
- v2.0.0-beta.1
- 1.x-dev
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.1
- v0.2.0
- v0.1.x-dev
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-windows-hang
- dev-windows
- dev-crash-on-windows-with-parallel
- dev-windows-stdio
This package is auto-updated.
Last update: 2024-09-19 04:19:25 UTC
README
AMPHP 是一个针对 PHP 设计的事件驱动库集合,考虑到纤维和并发性。 amphp/process
提供了一个在所有主要平台(包括 Windows)上工作的异步进程调度器。它使运行子进程变得简单。
由于 Windows 管道是文件句柄且不允许非阻塞访问,因此该软件包使用了一个 进程包装器,通过套接字提供对这些管道的访问。在类 Unix 系统上,它使用标准管道,因为这些管道可以无阻塞访问。并发性由 Revolt 事件循环管理。
安装
此软件包可以作为 Composer 依赖项安装。
composer require amphp/process
此软件包需要 PHP 8.1 或更高版本。
用法
使用 Process::start()
启动进程
<?php require __DIR__ . "/vendor/autoload.php"; use Amp\ByteStream; use Amp\Process\Process; // "echo" is a shell internal command on Windows and doesn't work. $command = DIRECTORY_SEPARATOR === "\\" ? "cmd /c echo Hello World!" : "echo 'Hello, world!'"; $process = Process::start($command); Amp\async(fn () => Amp\ByteStream\pipe($process->getStdout(), ByteStream\getStdout())); Amp\async(fn () => Amp\ByteStream\pipe($process->getStderr(), ByteStream\getStderr())); $exitCode = $process->join(); echo "Process exited with {$exitCode}.\n";
自定义工作目录
默认情况下,进程使用当前进程的工作目录。如果需要,可以将工作目录自定义到另一个目录。
$process = Amp\Process\Process::start($command, workingDirectory: '/path/of/your/dreams');
自定义环境变量
默认情况下,进程使用当前进程的环境变量。可以通过传递一个将变量名映射到其值的关联数组来自定义环境。
$process = Amp\Process\Process::start($command, environment: [ 'PATH' => '/usr/bin/local' ]);
版本控制
amphp/process
遵循与其他 amphp
软件包相同的 semver 语义版本规范。
安全性
如果您发现任何安全相关的问题,请使用私有安全问题报告器,而不是使用公共问题跟踪器。
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 LICENSE
。