我有使用PostgreSql 9.1
和PHP 5.3
构建的足够高负载系统。
我必须在用户登录后每次存储上次登录时间和ip用户。当用户登录系统将其存储到Redis
并且我在crontab中有脚本执行每分钟并从Redis
获取数据并使用上次登录时间更新用户的行,并在DB中更新一行查询。
如果此时某些脚本开始执行用户表的更新查询,我可以在PostgreSql
日志中找到共享锁错误。当PostgreSql
中发生此错误而PDO没有任何异常时,php脚本崩溃的巨大问题。
我知道要避免共享锁,我需要一个接一个地执行更新查询,而不是同时执行。但要实现它在我的系统中并不那么容易。 避免共享锁的最佳方法是什么?