Php 在queue job laravel中,根据我的实验,有两个不同的作业/工作进程,例如使用相同的db事务。在laravel日志上打印随机数(8位随机数)以标记2个相同或不同的进程后,我知道这一点。因此,我有两个工作进程从数据库中获得相同的数据选择。我还尝试
Php 在queue job laravel中,根据我的实验,有两个不同的作业/工作进程,例如使用相同的db事务。在laravel日志上打印随机数(8位随机数)以标记2个相同或不同的进程后,我知道这一点。因此,我有两个工作进程从数据库中获得相同的数据选择。我还尝试,php,laravel,postgresql,cron,queue,Php,Laravel,Postgresql,Cron,Queue,在queue job laravel中,根据我的实验,有两个不同的作业/工作进程,例如使用相同的db事务。在laravel日志上打印随机数(8位随机数)以标记2个相同或不同的进程后,我知道这一点。因此,我有两个工作进程从数据库中获得相同的数据选择。我还尝试使用sleep函数(10秒)和两个cron进程锁定表,并收到了相同的问题(数据加倍)。用于更新跳过锁定是正确的还是仅用于更新锁定更安全。?谢谢 ProcessB::dispatch(from any id i have select as st
在queue job laravel中,根据我的实验,有两个不同的作业/工作进程,例如使用相同的db事务。在laravel日志上打印随机数(8位随机数)以标记2个相同或不同的进程后,我知道这一点。因此,我有两个工作进程从数据库中获得相同的数据选择。我还尝试使用sleep函数(10秒)和两个cron进程锁定表,并收到了相同的问题(数据加倍)。用于更新跳过锁定是正确的还是仅用于更新锁定更安全。?谢谢
ProcessB::dispatch(from any id i have select as string)->onQueue('queueA');
--first select data with lock
SELECT *
FROM tableB
WHERE is_proccesed = 0 AND id in (parameter get from job A if any)
LIMIT 1000
FOR UPDATE OF tableB SKIP LOCKED
-- call API with parameter value is from tableB
-- update data
UPDATE tableB SET is_proccesed = 1 where id = (from any id i have select)
UPDATE tableB SET is_proccesed = 0 where id = (from any id i have select)