我发现自己在 PHP 中使用 memcached 做了一些相对高级的事情。思考和解决由缓存的无锁特性引起的竞争条件和并发问题正在成为一场精神斗争。
当涉及到并发性(线程,有人吗?)时,PHP 的工具似乎相当差,所以我想知道是否有任何解决方案可以正确地测试/调试它。
我不想等到两个用户请求两个脚本同时作为并行进程运行并导致并发问题,这会让我摸不着头脑,或者我可能永远不会注意到,直到它滚雪球般变成 clusterfsck。
我应该知道什么神奇的 PHP 并发魔杖?
PHP 不是一种为多线程设计的语言,我认为它永远也不会。
如果您需要互斥功能,PHP 有一个信号 http://us.php.net/sem您可以编译的函数。
Memcache 没有互斥功能,但可以使用内存缓存::add() http://us.php.net/manual/en/function.memcache-add.php method.
如果您使用 MySQL 数据库,并试图防止某种竞争条件损坏,您可以使用锁表 http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html声明,或使用交易 https://web.archive.org/web/20081219053301/http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-transactions.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)