2011-07-29 2 views
4

나는 큰 PHP 프레임 워크를 구축하고있다. 이제 각 스크립트에서 가능한 모든 코어를 활용하려고합니다.PHP/아파치에서 mutithreading

하나의 스크립트를 여러 코어에서 어떻게 실행할 수 있습니까? 예를 들어, 나는 두 개의 함수가 하나의 PHP 파일에 처리량이 많다고 말할 수 있습니다. 두 개의 서로 다른 프로세서에서 동시에 두 가지를 모두 실행 한 다음 결과를 스크립트에 반환하고 나머지 처리를 계속 수행하려면 어떻게해야합니까?

나는 온라인을 찾고 시도했지만 내가 찾은 유일한 솔루션은 데스크톱 응용 프로그램 당신은 PCNTL 보길 원하는

+0

많은 클라이언트가있는 경우 이미 코어를 사용하고있을 것입니다. 당신이 * 어쩌면 * 얻을 수있는 조금 빠른 반응은 ... 그만한 가치가 있습니까? 'mpstat'는 무엇을 보여줍니까? –

답변

1

그런 다중 처리 방법은 없습니다. 당신이 할 수있는 것은 주요 PHP 파일을 만든 다음 무언가를하는 파일을 가지고 다중 스레드를 열기 위해 여러 아약스 호출을하는 것입니다. 그게 내가하는 일이야. 쉽고 설치하기가 복잡하지 않음

+0

감사합니다. – Anush

1

에 있었다 ...이 같은 웹 응용 프로그램을 만드는 데 사용할 수있는 다른 스크립트가 있습니다. CGI-mod 용으로 설계되었지만 을 아파치 용으로 사용할 수 있습니다.

사용 예제 : PHP에서

<?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); 
?> 
+0

그 자식 프로세스에 좋은 것입니다하지만 내가 동시에 두 가지 기능을 실행하고 싶습니다 ... – Anush

+0

잘 포크 프로세스의 복제본을 만들어, 그래서 당신이 무엇이든 할 수 있습니다. pcntl_fork()가 원하는대로 PCNTL이 필요합니다. 이 예제는 단지 예일뿐입니다. – AlienWebguy

+0

하지만 클론을 비싸게 만들지 않으며 어떤 기능을 결정할 것입니다. – Anush