2016-05-01 8 views
1

私はマルチスレッドのためにpthreadを使用しようとしています。私はコンストラクタでプールを作成しています。最初のパラメータは労働者の数です。PHPスクリプト(linux)でプロセッサコアの数を計算する方法は?

$pool = new Pool(8, 'WebWorker'); 

プロセッサコアの数を自動的に検出したいと考えています。このようなもの:

$pool = new Pool(get_processor_cores_number(), 'WebWorker'); 

どのようにPHPで可能ですか?あなたはそのような何かを行うことができます

答えて

2

、もちろんあなたのサーバーは、Linuxで次のようになります。

function get_processor_cores_number() { 
    $command = "cat /proc/cpuinfo | grep processor | wc -l"; 

    return (int) shell_exec($command); 
} 

あなたはint型にキャストし、その後シェルコマンドを実行します。 krakjoe/sysconf

<?php 
$cpusConfigured = sysconf(SYSCONF_NPROCESSORS_CONF); 
$cpusOnline  = sysconf(SYSCONF_NPROCESSORS_ONLN); 
?> 

ほとんどのアプリケーションでのみ構成された数を気:

+0

PHPは、この目的のために任意のビルドの機能を持っているdoesntの? – mnv

+0

私はこれを達成できるネイティブPHP関数を知らない。 – olibiaz

+0

'cat/proc/cpuinfo |グレーププロセッサー| wc -l'は完全に醜いです。 3つと2つのパイプではなく、1つのプロセスで同じことができます。 'grep -c processor/proc/cpuinfo' –

2

はここで拡張さらすことにsysconfです。

1

サーバーでは、次のスニペットでそれを行うことができますLinuxマシンの場合:

$ncpu = 1; 

if(is_file('/proc/cpuinfo')) { 
    $cpuinfo = file_get_contents('/proc/cpuinfo'); 
    preg_match_all('/^processor/m', $cpuinfo, $matches); 
    $ncpu = count($matches[0]); 
} 
関連する問題