【发布时间】:2010-04-23 12:11:43
【问题描述】:
情况:
我正在用 C 语言编写一个维护多个线程的程序。一旦线程结束,就会创建一个新线程。
每个线程分叉 - 子进程通过 exec() 运行 PHP 进程,父进程等待它完成。
每个 PHP 进程从队列中取出下一项,处理它并退出。
基本代码:http://www.4pmp.com/2010/03/multitasking-php-in-parallel/
问题:
PHP 进程是 Symfony 任务,Symfony 需要相当大量的内存。如何安全地计算每个线程所需的堆栈空间,以便 PHP 进程有足够的内存?
php.ini 中设置的内存限制是 128Mb,我应该在堆栈中分配这么多空间吗?
【问题讨论】:
-
你为什么要像这样搅动线程?你不能让一个线程一个接一个地执行一个任务吗?
-
在这种情况下,队列中的每个项目都是一封电子邮件,因此多线程是有意义的,因为瓶颈不是 CPU,而是 SMTP 通信。
-
我很确定 PHP 的 memory_limit 是针对堆而不是堆栈的。
-
也许我应该提一下,每个 PHP 进程实际上处理队列中的 x 个项目(在本例中为 1000 个)
标签: php c multithreading stack