我发现自己在PHP中使用memcached做了一些相对高级的东西。考虑并解决由缓存的无锁性质引起的竞争条件和并发问题正在成为一种精神上的困难。
对于并发(线程,任何人?),PHP在工具中似乎很差,所以我想知道是否有任何解决方案可以正确地测试/调试它。
我不想等到两个用户请求两个同时作为并行进程运行的脚本并导致并发问题,这会让我感到头疼,或者我可能没有注意到它直到滚雪球进入一个clusterfsck。
我应该知道的任何神奇的PHP并发魔杖?
答案 0 :(得分:3)
PHP不是一种专为多线程设计的语言,我认为它不会是。
如果您需要互斥功能,PHP可以编译Semaphore个函数。
Memcache没有互斥功能,但可以使用Memcache::add()方法进行模拟。
如果您使用的是MySQL数据库,并且正在尝试防止某种竞争条件损坏,您可以使用lock tables语句,或使用transactions。
答案 1 :(得分:1)
您可以尝试使用可以同时发出多个请求的负载测试工具来捣乱您的代码。想到Jmeter。
答案 2 :(得分:0)
不是专门针对此问题而是:FirePHP?