gpt4 book ai didi

php - Windows 中使用 PHP 的应用程序线程

转载 作者:可可西里 更新时间:2023-11-01 10:50:22 26 4
gpt4 key购买 nike

我正在制作一个 PHP 应用程序,该应用程序生成子进程,其中的参数详细说明了它们应该执行的工作。更具体地说,子进程将处理来自大型 MySQL 数据库的行,而父应用程序将对这些行进行计数并生成约 50 个进程,其中包含要处理的行跨度。

我需要一种方法让父进程知道子进程是否完成。我以前在 Linux 中制作过这个应用程序,使用 MySQL 表供子进程 checkin 。这次我想独立于 MySQL 进行进程管理(现在我在 Windows 中)。

有没有办法让 PHP 父进程在创建子进程时获取子进程的“句柄”并观察它的事件?

我希望我清楚我正在尝试做的事情的要点。任何答案和建议将不胜感激。

除了使用其他编程语言的建议 - 我正在使用许多 PHP 库进行处理以及自定义类和函数

最佳答案

我曾经构建了一个小样本,它会启动自身的副本以进行某些性能测试。使用的主要脚本proc_open()调用子进程。这样,您可以将脚本的输入和输出重定向到主脚本并交换命令/数据。我不再拥有该脚本的来源,但这是一个粗略的轮廓:

$fork = array();
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
);
for ($i = 0; $i < 50; $i++){
$fork[$i] = array('process' => NULL, 'pipes' => array());
$fork[$i]['process'] = proc_open('php script.php', $descriptorspec, $fork[$i]['pipes']);
}
# Loop thru $fork, check feof of the pipes
# write commands, read data
# if all pipes return feof, proc_close($fork[$i]['process'] will return the returncode

我希望这对你有用; )

关于php - Windows 中使用 PHP 的应用程序线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6037934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com