我发现自己在用PHP使用memcached做一些相对高级的事情。思考和解决由缓存的无锁特性引起的竞争条件和并发问题正成为一种精神上的斗争。
当谈到并发性(线程,有人吗?)时,PHP在工具方面似乎相当糟糕,所以我想知道是否有任何解决方案可以正确地测试/调试它。
我不想等到两个用户请求两个脚本,这两个脚本将同时作为并行进程运行,并导致并发问题,这会让我抓狂,或者直到它滚雪球变成clusterfsck时我才会注意到。
有没有我应该知道的PHP并发魔术棒?
发布于 2008-09-15 21:16:52
PHP不是为多线程而设计的语言,我认为它永远也不会是。
如果你需要互斥功能,PHP有一个Semaphore函数,你可以在里面编译。
Memcache没有互斥功能,但是可以使用Memcache::add()方法来模拟它。
如果您使用的是MySQL数据库,并且试图防止某种类型的竞态条件损坏,则可以使用lock tables语句或transactions。
发布于 2008-09-15 21:17:34
您可以尝试使用可以同时发出多个请求的负载测试工具来猛烈抨击代码。Jmeter出现在我的脑海中。
发布于 2008-09-15 21:10:41
不是专门针对这个问题,而是:FirePHP
https://stackoverflow.com/questions/66952
复制相似问题