環(huán)境:Linux
PHP版本:8.2
框架程序:ThinkPHP8
擴展:topthink/think-worker、workerman3.5
$reptile = reptile::where('status', 1)->select()->toArray();
// 創(chuàng)建 Worker 實例
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']; // 設置 Worker 名稱
$reptileWorker->run(); // 啟動當前 Worker 實例
}
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
在單獨創(chuàng)建Worker的時候是正常的,創(chuàng)建多個的時候運行報錯。
我在論壇查詢問題了解過是因為我用的是workerman3.5版本太低,PHP8.2,但是因為這個項目無法更改擴展等問題,所以我有點無從下手。如果能通過修改workerman源代碼或者其他方法解決的話就太好,求幫忙兄弟們
這個報錯信息指的是在 PHP 中調(diào)用 round() 函數(shù)時,傳入的第二個參數(shù)($precision)為 null,而 PHP 8.1 及以后的版本中,這種做法被標記為 棄用(deprecated),因為 round() 的第二個參數(shù)要求是一個 整數(shù) 類型。
ai回答要改成 $loadavg = \function_exists('sys_getloadavg') ? \array_map(function($val) { return round($val, 2); }, \sys_getloadavg()) : array('-', '-', '-');