我正在开发一个网络应用程序,我在端口上侦听并在新的连接请求到达时创建一个新的套接字和线程;该架构运行良好,但我们正面临严重的内存问题。PHP pthreads内存问题
问题是,即使我创建了一个单独的线程,但它的工作,但内存不断增加。
为了演示这个问题,请查看下面的代码,我们在其中启动一个类的职责,它的职责是无限打印一个线程ID和一个随机数。
class ThreadWorker extends Thread {
public function run() {
while(1) {
echo $this->getThreadId()." => ".rand(1,1000)."\r\n";
}
}
}
$th = new ThreadWorker();
$th->start();
我开发它在Windows操作系统上,当我打开任务管理器的PHP.EXE内存使用量不断增加,直到系统变得反应迟钝。
请注意,PHP脚本是从命令行下执行:
PHP.exe pthreads-test.php
您是否在创建0和1线程的情况下测试了代码? php.exe如何执行? (只是改变for循环的最高值) – Claudix 2014-09-06 10:15:30
@Claudix如果我只是创建一个线程而不是100,那么结果是完全相同的。让我改变例子。 – 2014-09-06 10:17:49
现在尝试将线程的while(1)'循环(即删除echo命令)留空。然后会发生什么? – Claudix 2014-09-06 10:24:50