问题标签 [php-pthread]

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 投票
3 回答
1284 浏览

php - PHP - 多线程和池

Pool在 PHP 中使用对象pthread,并制作了以下测试脚本,以查看池应该如何工作。我认为,池化应该做的是获得给定数量的任务,打开最大x数量的工人,并分配给他们任务,一旦工人完成任务,如果有更多任务可用,分配给那个工人一个新的任务。

给定以下示例和上述假设:

我期待这个脚本输出以下信息:

1 准备好了
2 准备好了
3 准备好了
0 准备好了

因为,基本上有 2 个工人可用,并且由于sleep第一个工人偶然发现的操作,任务 1,2,3 必须由第二个工人完成。

而不是这个,我得到的输出是:

1 准备好了
3 准备好了
0 准备好了
2 准备好了

很明显,工人 1 在开始时被分配了作业 0 和作业 2,因此工人 2 在完成作业 1 和作业 3 后只是等待,而不是从工人 1 那里接管作业 2。

这是一个错误吗?还是打算以这种方式工作?

我的 PHP 版本:

0 投票
0 回答
34 浏览

php - 为什么对象中的套接字设置为0

我正在创建一个多线程服务器,我一直在解决这个问题。要接受和处理连接,我使用 socket_accept,然后创建一个 Connection 对象,将其添加到数组中,然后通过所有数组获取。但是由于某种原因,当我在执行 $connection::read (执行 socket_read)时,此对象中的套接字变为 0。但是当构造对象时,一切都很好,转储套接字返回资源,但在读取时转储相同的套接字() 抛出警告,因为套接字为 0。这里有一些代码

0 投票
1 回答
638 浏览

multithreading - PHP 放大器/并行。请给我一个关于池并行函数的例子

我一直被困在关于并行运行函数的任务中。我已经从 krakjoe 尝试了这个库多线程pthreads,但我对 ubuntu 中的安装了解有限。我已经尝试过这个amp/parallel和其他amphp。github中的示例运行良好,但我无法按照我的风格实现。

如果在这个 amp/parallel 中有很多例子要做,我不熟悉任何语义。我会很高兴的。

问题

我需要并行运行一个函数,我想从 excel 文件中读取报告,并将所有行批量插入到数据库中,这个过程需要两个小时才能完成。我想以并行方式重复这些功能。如何批量插入和读取文件 Excel 我知道这样做。

请给我一些例子,无论何时来自博客、网站或 github 关于 php7.2 中的并行函数或多线程。

0 投票
0 回答
117 浏览

php - PHP segfault - 如何获取 php 文件和行号?

我有一个大应用程序,以多线程模式运行 - 45 个线程。在某些时候,应用程序崩溃了Segmentation fault。我通过以下方式使用 gdb:

完整的回溯是:

所以可能错误出现在我的 PHP 代码中。但我不知道它可能在哪里。我可以知道发生分段错误的确切 PHP 文件和行吗?

Xdebug 我无法使用,因为它与某些扩展名冲突。多线程模式也可能是 xdebug 的一个问题。

我的环境是:

Ubuntu 服务器 18.04 64bit PHP 7.2.2 ZTS 无调试

0 投票
1 回答
76 浏览

php - PHP pthreads async with threads number 卡住了

我正在尝试实现一个脚本,该脚本以限制(5)启动线程异步并在所有线程都忙时等待。如果线程很忙,我的脚本必须等到一个空闲,它应该启动另一个,但由于某些原因确实卡住了。昨天我发现了 pthreads,今天几个小时后,这就是我带来的全部内容:

编辑:例如,有 500 个线程的示例,但在我的情况下,我需要解析目标的大文件(几 MB),并且我需要使其异步工作。

输出:

我知道这很原始,但我对 pthreads 完全陌生,所有示例都没有异步线程数限制。我的代码肯定有问题,但我不知道在哪里。

0 投票
0 回答
88 浏览

php - PHP pthreads 异步优化

在用pthreads修补/测试了几天之后,我设法从头开始编写了一个真正满足我需要的脚本。我的脚本的重点是像 500-1000 个线程一样运行异步,并在有可用线程时立即创建新线程。但是,因为我不是PHP 专家,所以我的代码可能有一些缺陷,或者它可能是我想要的相同任务,但以另一种方式,以更好的方式。

到目前为止,我看到的一些缺陷是:

  • 该脚本可能会导致 CPU 进入 100% 使用状态,因为如果在 while 循环中没有使用睡眠。参见 sleep(3) 行。
  • 代码中存在缺陷或不必要的东西。因为我是 pthreads 的菜鸟,所以它可能是做同样事情的另一种方式,但更优化'。

感谢任何改进我的代码的建议。我发布这个的原因是因为我实际上没有在搜索引擎上找到任何这样做的东西。所有的例子都是同步的,所有的异步例子,比如,运行 500 个线程然后停止,我一直在寻找它可以产生 500 个线程但继续产生另外 500 个线程直到到达文件末尾的东西。

脚本:

0 投票
0 回答
196 浏览

php - Pthread 不存在

我想在 wampserver php 7.4.4 中安装 pthreads 扩展,但我不知道为什么不起作用。

我按照以下步骤操作:

1)下载这个文件“php_pthreads-3.2.0-7.2-ts-vc15-x64”

2) 将“pthreadVC2.dll”提取到我的 php 根目录并将其添加到 PATH

3) 将“php_pthreads.dll”提取到我的 /ext 文件中

4)添加到好的php.ini这一行“extension=pthreads”

5)重启wamp

我的 PHP 信息:

谢谢

0 投票
0 回答
1105 浏览

docker - 在 alpine docker 镜像上安装 pthreads

开发人员要求我在 docker 映像中启用 pthread。这是用于处理来自 rabbitmq 的大型事件并在后台运行该进程。我的基础镜像是 alpine:3.9,上面运行着 apache 和 php

是否可以在 alpine docker 映像中编译 zts、pthread 和 apache?

这个 docker 文件有 zts 和 pthread 但不确定我们是否可以在它上面运行 apache

或者我们应该将 webserver 和 pthreads 分开到单独的容器中。看起来 pthreads 不适用于 apache。

0 投票
1 回答
1624 浏览

php - PHP 中的并行扩展是什么以及如何使用它?

我一直在尝试为我的应用程序使用 PHP 中的线程,但找不到适用于 PHP VC15 7.4 的 Windows 支持 DLL。当我在寻找有关 PHP 线程的更多详细信息和教程时,我发现 PHP 文档指向使用并行扩展而不是 pthreads 扩展,您可以在https://www.php.net/manual/en看到/intro.pthreads.php

它说

考虑改用并行。

我找不到任何代码示例或教程,也无法真正理解这个“并行”是什么,但我相信它一定很特别,因为 PHP 文档本身建议我考虑它。

0 投票
1 回答
820 浏览

php - PHP并行如何将变量传递给线程?

我使用并行 PHP 库,但我不知道如何将脚本的变量传递给并行线程。我在文档中查看我必须在“运行”函数中传递一个数组参数,但我不知道如何访问参数值。

我的脚本:

关于并行运行功能的文档链接:https ://www.php.net/manual/en/parallel-runtime.run.php

谢谢。