環(huán)境:Linux
PHP版本:8.2
框架程序:ThinkPHP8
擴(kuò)展:topthink/think-worker、workerman3.5
$reptile = reptile::where('status', 1)->select()->toArray();
// 創(chuàng)建 Worker 實(shí)例
foreach ($reptile as $key => $value) {
$reptileWorker = new reptileWorker([
'reptile_id' => $value['id'],
'reptile' => $value['reptile'],
'worker_id' => sprintf("%02d", $value['id']),
]);
$reptileWorker->name = 'wo_' . $value['id']; // 設(shè)置 Worker 名稱(chēng)
$reptileWorker->run(); // 啟動(dòng)當(dāng)前 Worker 實(shí)例
}
Worker::runAll();
----------------------------------------------------- WORKERS -----------------------------------------------------
proto user worker listen processes status
tcp root wo_1 http://0.0.0.0:2346 1 [OK]
tcp root wo_2 http://0.0.0.0:2346 1 [OK]
tcp root wo_3 http://0.0.0.0:2346 1 [OK]
tcp root wo_4 http://0.0.0.0:2346 1 [OK]
tcp root wo_5 http://0.0.0.0:2346 1 [OK]
tcp root wo_6 http://0.0.0.0:2346 1 [OK]
tcp root wo_7 http://0.0.0.0:2346 1 [OK]
round(): Passing null to parameter #2 ($precision) of type int is deprecated in file /mnt/d/PHP-code/Test/vendor/workerman/workerman/Worker.php on line 1919
在單獨(dú)創(chuàng)建Worker的時(shí)候是正常的,創(chuàng)建多個(gè)的時(shí)候運(yùn)行報(bào)錯(cuò)。
我在論壇查詢(xún)問(wèn)題了解過(guò)是因?yàn)槲矣玫氖莣orkerman3.5版本太低,PHP8.2,但是因?yàn)檫@個(gè)項(xiàng)目無(wú)法更改擴(kuò)展等問(wèn)題,所以我有點(diǎn)無(wú)從下手。如果能通過(guò)修改workerman源代碼或者其他方法解決的話(huà)就太好,求幫忙兄弟們
這個(gè)報(bào)錯(cuò)信息指的是在 PHP 中調(diào)用 round() 函數(shù)時(shí),傳入的第二個(gè)參數(shù)($precision)為 null,而 PHP 8.1 及以后的版本中,這種做法被標(biāo)記為 棄用(deprecated),因?yàn)?round() 的第二個(gè)參數(shù)要求是一個(gè) 整數(shù) 類(lèi)型。
ai回答要改成 $loadavg = \function_exists('sys_getloadavg') ? \array_map(function($val) { return round($val, 2); }, \sys_getloadavg()) : array('-', '-', '-');