php/apache中的多线程


mutithreading in php/apache

我正在构建一个大型php框架。现在我们正在尝试利用每个脚本中所有可能的内核。

如何跨多个内核运行一个脚本。例如,假设我在一个php文件上有两个函数,它们进行大量的处理。如何在两个不同的处理器上同时运行这两个程序,然后将结果返回给脚本并继续其余的处理?

有没有其他脚本可以用来创建这样的web应用程序…我试着在网上寻找,但我找到的解决方案只是在桌面应用程序

没有这样的多处理方法。你可能要做的是创建一个主php文件,然后有一个文件做一些事情,然后进行多个ajax调用,为它打开多个线程。这就是我所做的。简单,不太复杂的设置

您需要查看PCNTL。请记住它是为CGI-mod设计的,但它可以用于apache。

示例用法:

<?php 
// Create the MySQL connection 
$db = mysql_connect($server, $username, $password); 
$pid = pcntl_fork(); 
if ( $pid == -1 ) {        
    // Fork failed            
    exit(1); 
} else if ( $pid ) { 
    // We are the parent 
    // Can no longer use $db because it will be closed by the child 
    // Instead, make a new MySQL connection for ourselves to work with 
    $db = mysql_connect($server, $username, $password, true); 
} else { 
    // We are the child 
    // Do something with the inherited connection here 
    // It will get closed upon exit 
    exit(0); 
?> 

你不能在php中使用线程。这些旧的帖子可能有用:

    PHP线程和同步PHP中的线程

所以我猜你将需要通过任何ipc选项进行分叉和同步,所以这篇旧的文章可能会有所帮助:如何在PHP客户端和C守护进程服务器之间进行ipc ?