问题标签 [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 投票
6 回答
36142 浏览

php - 如何在 PHP MAMP 中启用进程控制扩展 (PCNTL)?


我有 MAMP,我需要-pcntl在我当前的 MAMP 安装上启用。我该怎么做?

谢谢你的帮助。

0 投票
2 回答
1253 浏览

php - 在 Web 服务器环境中的 PHP 中启用 PROCESS CONTROL (PCNTL) 的副作用是什么?


以下是来自http://www.php.net/manual/en/intro.pcntl.php的引用

在我的网络服务器上启用它有什么副作用?其中有哪些威胁和安全问题?

非常感谢你的帮助

0 投票
3 回答
4708 浏览

php - 激活 pcntl_fork() ubuntu xampp

我在 php 中的函数 pcntl_fork() 有一些问题。

我正在使用 XAMPP,我正在尝试使用该功能并一直显示此错误:

调用未定义函数 pcntl_fork()

我在 Google 和 XAMPP 论坛上挖掘了一些东西,但找不到任何完全有用的东西。我发现一些论坛说我需要启用一些名为

--启用-pcntl

我看到了 phpinfo() 并且我在配置命令中有该选项。你能帮助我吗?

提前感谢,

埃尔卡斯

0 投票
3 回答
2861 浏览

php - 如何在 pcntl_fork 之后将我的 mysql 连接保持在父进程中?

众所周知,当您 fork 时,孩子会获得所有内容的副本,包括文件和网络描述符 - man fork.

在 PHP 中,当您使用 pcntl_fork 时,您使用 mysql_connect 创建的所有连接都会被复制,这有点问题 - php docs and SO question。这种情况下的常识是关闭父连接,创建新连接并让孩子使用旧连接。但是,如果说父母需要在几秒钟内创造出许多孩子呢?在这种情况下,您最终会创建大量新连接 - 每一堆叉子都有一个。

这在代码中意味着什么:

好吧,我不想那样做——这对数据库的连接太多了。理想情况下,我希望能够实现与此类似的行为:

你认为有可能吗?

其他一些事情:

  • 这是 php-cli 脚本
  • 我已经尝试在第一个示例中使用 mysql_pconnect,但据我所知没有区别 - mysql 服务器接收到尽可能多的新连接。也许那是因为它是 cli 并且 pconnect 不能像在 mod_php 中那样工作。正如 Marc 所注意到的 - php-cli 中的 pconnect 没有意义。
0 投票
2 回答
822 浏览

php - pcntl_signal 不是由子进程触发的

我想实现这一点:

如果守护进程获得 SIGHUP 则再次运行该进程(作为子进程)并杀死父进程。

当我运行它时,第一次工作:

问题是,如果现在我要杀死子进程,则不会触发该功能

编码:

此代码适用于 PHP 5.2.9,但不适用于 PHP 5.3.5。有没有办法让它也适用于那个版本?

谢谢!

罗尼

0 投票
1 回答
264 浏览

php - PHP PCNTL - 可信赖的错误记录可能吗?

我当前的应用程序对 PHP 页面进行 ajax 调用,该页面向我们的 Oracle 平台上的 JSP 页面发出 API 请求。目前,PHP 脚本只相信从 JSP 返回的有效数据并将{true}json 响应发送回 ajax 成功处理程序。ajax 设置为现在优雅地失败,因此无论如何它都会工作,但这对我们没有帮助。

我的任务是,一旦 jsp 文件设置为抛出异常,我将让 PHP 相应地处理异常,记录错误并返回 json{false}响应。

我们担心如果过于全面,日志记录可能会花费太长时间。这个过程(没有记录或错误检查)目前非常快,速度是一个关键因素。我规避这个潜在瓶颈的想法是告诉 PHP “记录错误,但不要等待确认记录了任何内容,只需返回 false”。

我知道使用 PCNTL 可以进行分叉,但我对分叉整个过程犹豫不决,因为我可以看到如果我们进行分叉,这对内存的要求很高。

是否有可能做我希望的事情,即使不是使用 PCNTL,我将如何实现这一目标?

0 投票
2 回答
5297 浏览

php - 在运行查询之前,如何检查 PDO MySQL 连接是否有错误?

我的脚本在许多不同的功能中都充斥着分叉的进程。无论何时pcntl_fork()调用,所有 MySQL 连接都将丢失。如果我在 PDO MySQL 连接上运行查询,我会收到错误消息"MySQL server has gone away"

问题是此错误仅在PDO::errorinfo()查询执行失败后出现。我希望能够在尝试运行查询之前检测 MySQL 服务器是否“已消失”。这样我就可以创建一个 PDO 包装器,在这种情况下为我建立新的连接。

有任何想法吗?

0 投票
2 回答
2544 浏览

php - PHP pcntl 变量范围

我希望能够修改父 pid 中的数组元素。这是一些示例代码:

因此,当此脚本结束时,我在子进程中编写的两个元素在 foreach 循环结束时不存在。我无法从孩子修改父 pid 中的数组。我明白为什么,但想不出一个能让我这样做的好解决方案。你能提出什么建议吗?全局变量什么的?

0 投票
1 回答
4491 浏览

php - posix_kill 与 pcntl_signal

这有点深奥,在我自己拖钓源并回答之前,这个问题可能会没有答案,但这里是:

我是一个简单的 PHP 守护程序库的作者:https ://github.com/shaneharter/PHP-Daemon 。虽然 PHP 对于这类事情并不理想,但有时人们需要在 PHP 中守护进程或编写 crons 并编写库以使“外行”的任务更容易。

我正在为该库实现 JavaScript Workers API,并且正在考虑添加对 POSIX 的依赖项(现在它正在使用 PCNTL 做所有事情)。

有人知道 PCNTL_SIGNAL 和 POSIX_KILL 之间有什么区别吗?我可以使用任何一个向任何进程发送任何信号。所以....一个比另一个好?还是他们俩真的在幕后做同样的事情?

0 投票
1 回答
253 浏览

php - PHP pcntl 脚本 - 需要指导

我正在做一个抓取项目,在应用程序的某个地方我需要这个功能

一次又一次地运行一个脚本,停顿几秒钟。

我尝试使用 pcntl 来完成这项工作。所以写了这个脚本

我像这样从 CLI 调用这个脚本

我希望 process.php 会以 10 秒的间隔一次又一次地启动。它正在按照我的预期工作,但是当我检查正在运行的进程时,这个脚本启动了数千个正在运行的进程。

我的要求很简单:一个脚本应该以 10 秒的 Pause 一次又一次地启动。