2008-09-15 47 views
2

我发现自己用PHP中的memcached做了一些相对先进的东西。思考和解决由缓存的无锁特性引起的竞争条件和并发问题正在成为一种心理上的挣扎。测试/调试/修复PHP并发性问题的工具?

PHP似乎工具相当差,当涉及到并发(线程,任何人吗?),所以我不知道是否有任何解决方案在那里测试/调试这个正确。

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

任何魔法PHP并发棒我应该知道的?

回答

0

并非专门针对这个问题,但:FirePHP

+0

对于我更喜欢​​我现在的基于文件的记录系统,具有精确的时间戳,可以确认哪些运转时的帮助特定的问题。 – Gilles 2008-09-15 21:13:21

3

PHP是不适合多线程一种语言,我不认为它永远不会是。

如果您需要互斥的功能,PHP有一个Semaphore功能,您可以在。

内存缓存没有互斥能力编译,但它可以通过Memcache::add()方法进行仿真。

如果您正在使用MySQL数据库,并且正试图阻止某种竞争条件损坏,则可以使用lock tables语句或使用transactions

+0

感谢您的指点!我仍然在测试部门寻找一些东西,而不是在真正的并发情况下进行实际测试时添加安全网。例如,能够做信号量很酷,但如果它不能被正确测试,那有什么意义呢? – Gilles 2008-09-15 21:22:20

1

你可以尝试敲着你的代码的负载测试工具,可以使在同一时间多个请求。想到了Jmeter