我正在嘗試使用pthreads進行多線程。我正在使用構造函數創建池。第一個參數是工人數量。如何計算PHP腳本(linux)中的處理器核心數量?
$pool = new Pool(8, 'WebWorker');
我想自動檢測處理器內核的數量。類似這樣的:
$pool = new Pool(get_processor_cores_number(), 'WebWorker');
PHP怎麼可能?
我正在嘗試使用pthreads進行多線程。我正在使用構造函數創建池。第一個參數是工人數量。如何計算PHP腳本(linux)中的處理器核心數量?
$pool = new Pool(8, 'WebWorker');
我想自動檢測處理器內核的數量。類似這樣的:
$pool = new Pool(get_processor_cores_number(), 'WebWorker');
PHP怎麼可能?
你可以做這樣的事情,當然你的服務器應該是在Linux中:
function get_processor_cores_number() {
$command = "cat /proc/cpuinfo | grep processor | wc -l";
return (int) shell_exec($command);
}
您將執行shell命令,然後將它轉換爲int。
這裏是一個擴展的sysconf暴露:krakjoe/sysconf
<?php
$cpusConfigured = sysconf(SYSCONF_NPROCESSORS_CONF);
$cpusOnline = sysconf(SYSCONF_NPROCESSORS_ONLN);
?>
大多數應用程序只在乎配置的號碼。
如果服務器是一臺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]);
}
PHP不必須用於此目的的任何內置的功能? – mnv
我不知道任何原生的php函數能夠實現這一點。 – olibiaz
'cat/proc/cpuinfo | grep處理器| wc -l是非常醜陋的。 您可以使用單個進程而不是三個和兩個管道執行相同的操作: 'grep -c processor/proc/cpuinfo' –