2

我发现自己在 PHP 中使用 memcached 做了一些相对高级的工作。考虑和解决由缓存的无锁特性引起的竞争条件和并发问题正在成为一种精神斗争。

PHP 在并发方面的工具似乎很差(线程,有人吗?),所以我想知道是否有任何解决方案可以正确测试/调试它。

我不想等到两个用户请求两个脚本,它们将同时作为并行进程运行并导致并发问题,这会让我摸不着头脑,或者直到它滚雪球进入 clusterfsck 时我才注意到。

我应该知道的任何神奇的 PHP 并发魔杖?

4

3 回答 3

3

PHP 不是为多线程设计的语言,我认为它永远不会。

如果您需要互斥锁功能,PHP 有一个可以编译的信号量函数。

Memcache 没有互斥功能,但可以使用Memcache::add()方法进行模拟。

如果您使用的是 MySQL 数据库,并试图防止某种竞争条件损坏,您可以使用lock tables语句,或使用transactions

于 2008-09-15T21:16:51.740 回答
1

您可以尝试使用可以同时发出多个请求的负载测试工具来冲击您的代码。Jmeter浮现在脑海中。

于 2008-09-15T21:17:33.983 回答
0

不是专门针对这个问题,而是:FirePHP

于 2008-09-15T21:10:40.990 回答