首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP有线程功能吗?

PHP有线程功能吗?
EN

Stack Overflow用户
提问于 2008-10-16 18:46:27
回答 10查看 141.6K关注 0票数 135

我找到了这个PECL package called threads,但是还没有发布。PHP网站上什么也没有。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-10-16 18:55:23

据我所知没有任何可用的东西。下一个最好的办法就是让一个脚本通过CLI执行另一个脚本,但这有点初级。这取决于你想做什么以及它有多复杂,这可能是一个选择,也可能不是。

票数 40
EN

Stack Overflow用户

发布于 2008-10-17 02:18:49

以下是Wilco建议的一个示例:

$cmd = 'nohup nice -n 10 /usr/bin/php -c /path/to/php.ini -f /path/to/php/file.php action=generate var1_id=23 var2_id=35 gen_id=535 > /path/to/log/file.log & echo $!';
$pid = shell_exec($cmd);

基本上,这将在命令行执行PHP脚本,但会立即返回PID,然后在后台运行。(回声$!确保除PID外不返回任何其他内容。)这允许您的PHP脚本继续或退出,如果你想。当我使用它时,我将用户重定向到另一个页面,在那里每隔5到60秒进行一次AJAX调用,以检查报告是否仍在运行。(我有一个表来存储gen_id和与之相关的用户。)check脚本运行以下内容:

exec('ps ' . $pid , $processState);
if (count($processState) < 2) {
     // less than 2 rows in the ps, therefore report is complete
}

这里有一篇关于这项技术的简短文章:http://nsaunders.wordpress.com/2007/01/12/running-a-background-process-in-php/

票数 49
EN

Stack Overflow用户

发布于 2008-10-16 22:30:26

您可以使用pcntl_fork()来实现类似于线程的功能。从技术上讲,它是独立的进程,所以两者之间的通信不像线程那么简单,我相信如果apache调用PHP,它就不会工作。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/209774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档