对于并发性和确保数据的完整性,您将如何获得给定对象的互斥锁?你需要在数据库或文件中使用锁定,还是PHP支持这样的东西?
答案 0 :(得分:4)
PHP不支持多线程,因此对象没有锁定机制。如果要锁定文件,可以使用flock。没有必要锁定数据库,因为数据库引擎通常可以处理多个连接。
答案 1 :(得分:0)
请记住,PHP不是多线程的,所以你不太可能需要这样的东西......但是,如果你使用共享内存或任何其他外部资源,可能需要它。在这种情况下使用smaphores:
http://www.php.net/manual/en/function.sem-acquire.php
答案 2 :(得分:0)
涌向文件。
如果您想在数据库中使用锁,则需要对这些数据库使用锁功能。几乎所有数据库都使用某种形式的锁机制。
没有任何对象
答案 3 :(得分:0)
答案 4 :(得分:0)
与其他人一样,由于PHP不是多线程的,因此您无需锁定对象。但是,如果您需要锁定数据库,则可能需要查看transactions。有很多教程可以用PHP和MySQL进行交易(也可能用于其他RMDBS)。
答案 5 :(得分:0)
PHP可以在多线程环境中运行。 即使Web服务器未使用多个线程,也可以同时运行多个进程。
在这种情况下,并发问题仍然可能发生。
如果您希望使用类似于锁的方法来解决并发问题,则可以使用信号量: http://www.php.net/manual/en/function.sem-acquire.php