2011-07-29 8 views
4

私は大きなPHPフレームワークを構築しています。現在、各スクリプトですべてのコアを利用しようとしています。php/apacheのmutithreading

複数のコアにわたって1つのスクリプトを実行する方法。例えば、1つのPHPファイルに2つの関数があり、処理が大量であるとします。どのようにして2つの異なるプロセッサーで同時に両方を実行し、その結果をスクリプトに戻し、残りの処理を続けることができますか。

は、このようなWebアプリケーションを作成するために使用することができる他の任意のスクリプトがあります...私は、オンラインで探して試してみましたが、私が見つけた唯一の解決策は、あなたがPCNTLに見たいデスクトップアプリケーションに

+0

多くのクライアントをお持ちの場合は、すでにコアを利用している可能性があります。あなたが*多分*得ることができるものは少し速い応答です...それはそれの価値がありますか? 'mpstat'は何を表示しますか? –

答えて

1

このようなマルチプロセッシング方法はありません。あなたがするかもしれないことは、メインのPHPファイルを作成し、何かをするファイルを持っているし、複数のスレッドを開くために複数のajax呼び出しを行います。それは私がすることです。簡単でセットアップが複雑すぎない

+0

ありがとう – Anush

1

ました。 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); 
?> 
+0

これは子プロセスにとっては素晴らしいものですが、2つの機能を同時に実行したいと思っています。 – Anush

+0

よくフォークするとプロセスのクローンが作成されます。 pcntl_fork()があなたの望むものであるかどうかにかかわらず、PCNTLが必須です。この例はちょうど例であった: – AlienWebguy

+0

しかし、クローンを高価にすることはできませんし、どの機能がどのように決定するでしょう。 – Anush

関連する問題