Open augushong opened 6 months ago
如下面报错,其实不用特别的高并发,用workerman开4个进程,如果有频繁的模型save,没有开启数据库字段缓存,就会频繁出现下面的报错。
TypeError: think\cache\driver\Redis::getTagItems(): Return value must be of type array, bool returned in /home/augushong/www/ulthon_admin/vendor/topthink/framework/src/think/cache/driver/Redis.php:233 Stack trace: #0 /home/augushong/www/ulthon_admin/vendor/topthink/framework/src/think/cache/TagSet.php(112): think\cache\driver\Redis->getTagItems() #1 /home/augushong/www/ulthon_admin/vendor/topthink/think-orm/src/db/PDOConnection.php(877): think\cache\TagSet->clear() #2 /home/augushong/www/ulthon_admin/vendor/topthink/think-orm/src/db/PDOConnection.php(1167): think\db\PDOConnection->pdoExecute() #3 /home/augushong/www/ulthon_admin/vendor/topthink/think-orm/src/db/BaseQuery.php(1260): think\db\PDOConnection->update() #4 /home/augushong/www/ulthon_admin/vendor/topthink/think-orm/src/Model.php(673): think\db\BaseQuery->update() #5 /home/augushong/www/ulthon_admin/vendor/topthink/think-orm/src/db/PDOConnection.php(1521): think\Model->think\{closure}() #6 /home/augushong/www/ulthon_admin/vendor/topthink/think-orm/src/db/concern/Transaction.php(47): think\db\PDOConnection->transaction() #7 /home/augushong/www/ulthon_admin/vendor/topthink/think-orm/src/Model.php(665): think\db\BaseQuery->transaction() #8 /home/augushong/www/ulthon_admin/vendor/topthink/think-orm/src/Model.php(564): think\Model->updateData() #9 /home/augushong/www/ulthon_admin/app/worker/net/worker/start.php(86): think\Model->save() #10 /home/augushong/www/ulthon_admin/vendor/workerman/workerman/Events/Event.php(167): app\common\console\WorkerCommandConsole->{closure}() #11 [internal function]: Workerman\Events\Event->timerCallback() #12 /home/augushong/www/ulthon_admin/vendor/workerman/workerman/Events/Event.php(193): EventBase->loop() #13 /home/augushong/www/ulthon_admin/vendor/workerman/workerman/Worker.php(1635): Workerman\Events\Event->loop() #14 /home/augushong/www/ulthon_admin/vendor/workerman/workerman/Worker.php(1426): Workerman\Worker::forkOneWorkerForLinux() #15 /home/augushong/www/ulthon_admin/vendor/workerman/workerman/Worker.php(1400): Workerman\Worker::forkWorkersForLinux() #16 /home/augushong/www/ulthon_admin/vendor/workerman/workerman/Worker.php(1785): Workerman\Worker::forkWorkers() #17 /home/augushong/www/ulthon_admin/vendor/workerman/workerman/Worker.php(1721): Workerman\Worker::monitorWorkersForLinux() #18 /home/augushong/www/ulthon_admin/vendor/workerman/workerman/Worker.php(562): Workerman\Worker::monitorWorkers() #19 /home/augushong/www/ulthon_admin/app/common/console/WorkerCommandConsole.php(84): Workerman\Worker::runAll() #20 /home/augushong/www/ulthon_admin/app/common/command/fusion/NetWorker.php(35): app\common\console\WorkerCommandConsole->execute() #21 /home/augushong/www/ulthon_admin/vendor/topthink/framework/src/think/console/Command.php(210): app\common\command\fusion\NetWorker->execute() #22 /home/augushong/www/ulthon_admin/vendor/topthink/framework/src/think/Console.php(649): think\console\Command->run() #23 /home/augushong/www/ulthon_admin/vendor/topthink/framework/src/think/Console.php(308): think\Console->doRunCommand() #24 /home/augushong/www/ulthon_admin/vendor/topthink/framework/src/think/Console.php(245): think\Console->doRun() #25 /home/augushong/www/ulthon_admin/think(12): think\Console->run() #26 {main}
有点奇怪,按照 phpredis 的文档,返回类型应该只有 array,不应该返回 bool
array
bool
如下面报错,其实不用特别的高并发,用workerman开4个进程,如果有频繁的模型save,没有开启数据库字段缓存,就会频繁出现下面的报错。