【发布时间】:2017-08-31 09:02:57
【问题描述】:
我在 ubuntu linux 上安装了一个 php,它工作得很好,但我现在需要使用 pool 类。
我在 80 端口上运行了普通的 php 和 apache 设置。我想使用 pool 类来创建 100 个 worker 来处理许多多行 mysql 数据。
我应该使用像php -f file.php 这样的cli 运行基于池类的程序还是应该使用什么方法。
普通的 php 在 80 端口向最终用户提供内容与在 php cli 上的服务内容不同吗?
如果我从 cli 运行池程序,运行基于池类的程序会占用普通的 php 资源吗?
在需求中
pthreads 需要使用 ZTS(Zend 线程安全)构建 PHP 启用(在 Windows 上 --enable-maintainer-zts 或 --enable-zts )
【问题讨论】:
-
您需要重新编译您的 PHP 安装才能使用 ZTS。作为替代方案,您可以使用普通的 PHP CLI 进程,然后使用 ZMQ 在进程之间进行消息传递。
-
假设我并排安装了普通 php 和 php cli,碰巧一个 cli 程序使用的资源比它应该使用的多,这会影响我用于服务器的普通 php 安装网页?。
-
当然可以。但是 pthreads 也会这样做。 CPU 周期、RAM、HDD 带宽和其他 I/O 不能凭空而来。也许您应该将其卸载到另一台服务器,然后像 ZMQ 这样的消息传递解决方案是您的最佳选择。
-
是的,这是个好主意。我会将 pthread 卸载到另一台服务器上。
-
你不需要 pthreads (不需要重新编译 PHP)。您可以使用 supervisord 管理正常的 CLI 进程,或者只从
/etc/rc.local启动它们(不推荐)。