问题标签 [pcntl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
699 浏览

php - PHP pcntl_fork() 背后发生了什么?

我花了数小时、数天、数周试图了解 PHP pcntl 的真正工作原理,但仍然不知道到底发生了什么。

为什么是父母和孩子?我正在使用 Debian(我必​​须承认我是计算机专家),但我想做的只是从我的 webSocket 客户端(我已经设法做到)接收消息并继续倾听其他用户。

换句话说,如果我收到一条消息并使用 a ,sleep(5);那么在这段代码完成之前,服务器将不会监听任何其他消息。

请注意,这sleep(5)是出于测试目的。我计划同时处理数百条消息,这就是为什么我试图弄清楚如何能有所帮助pcntl

上述脚本背后究竟发生了什么?为什么我会得到这个结果?

开始

父母

结尾

开始

孩子

结尾

有人可以解释一下计算机“在想什么”吗?

0 投票
1 回答
321 浏览

php - PHP 系统守护程序 PCNTL 错误...但已安装 PCNTL

我已经接管了一个项目,并试图让它在我的服务器上运行....虽然我似乎遇到了系统守护程序的以下问题(代码如下)

我已经安装了 pcntl:

所以不知道为什么我会收到这个错误。谁能看到我做错了什么?

任何建议将不胜感激!

谢谢!

queue.php(浏览器)

queue.php(代码)

0 投票
2 回答
1432 浏览

php - 使用 pcntl_fork 在 PHP 守护程序中“MySQL 消失”

我正在尝试使用 PHP 守护程序和 fork(使用 pcntlfork)检索数据库值,并为检索到的每个 id 创建一个实例。

每个 fork 都应该做一些工作,然后更改数据库值,因此不会再次检索它。

但是,例如,当我分叉一个孩子并让它休眠 10 秒(实际处理时间)时,似乎 MySQL 连接超时。我该如何防止这种情况发生?try/catch 似乎并不能防止错误。

0 投票
3 回答
6923 浏览

php - 为什么在 php 中使用多线程不是一个好主意?

我知道php没有线程。但在本教程中,他们展示了通过使用主机操作系统的能力,我们可以实现它。它还表示不要在生产代码中这样做。为什么这不是一个好主意?

这是一个示例代码

这是教程

0 投票
1 回答
2072 浏览

php - 如何让子进程将值返回给父进程

我正在尝试跨多个进程运行 for 循环,并且需要每个 for 循环写入父进程中的数组。我试过用数组退出子进程,但pcntl_wexitstatus()只能返回一个整数。所以我被困住了。

我对多处理非常陌生,但是,我看到人们说在父子之间共享变量的一个很好的解决方案是shmop,但我真的不知道如何利用它。

这是我的代码:

只是为了澄清我期望发生的事情,该$output数组应该包含四个项目,这些项目也是每个包含一百万个项目的数组。它应该如下所示:

0 投票
1 回答
5753 浏览

php - 调用未定义的函数 pcntl_fork() ubuntu 服务器 apache

我对 pcnt_fork 有疑问

我按照本教程进行安装

但是如果我查看 apache 错误日志,我有 PHP 致命错误:调用未定义的函数 pcntl_fork() 呢。!!

0 投票
1 回答
143 浏览

php - PHP CLI: How do I intercept terminal window/tab closure?

I use pcntl_signal function to handle Ctrl+Z, Ctrl+C and exit at safe point from the application.

Can I do the same when user close window?

0 投票
1 回答
1436 浏览

php - pcntl_signal 函数未命中且使用套接字时 CTRL+C 不起作用

我有一个简单的 PHP 脚本,我想从终端运行它,并且能够处理信号代码。该脚本创建一个 TCP 服务器并处理连接。不知道为什么,但我无法让信号处理工作:

CTRL+C 不会终止应用程序或命中函数。
如果我删除这些pcntl_signal函数,CTRL+C 会按预期杀死程序。

根据我所做的研究,这个设置应该可以工作。我已经在 PHP 5.5 和 5.6 中尝试过...无法按预期工作。

0 投票
1 回答
303 浏览

php - 子进程死亡时 SIGCHILD 未捕获信号

我正在尝试创建一个处理多个子线程的守护进程。但是子线程似乎没有将信号发送回父线程以调用该函数。我试图把它从课堂上拿出来,让它成为标准功能,但这似乎也无济于事。

0 投票
2 回答
79 浏览

php - 运行并行 PHP 脚本的最佳方法

我想一次运行 3 个不同的简单脚本,每个脚本都会抓取网站内容并返回一个字符串。pcntl、pthreads、后台 exec() 方法中哪一个最合适?我最感兴趣的是低资源消耗。