What is equivalent of the C# lock statement in PHP?

穿精又带淫゛_ 提交于 2019-12-07 14:50:14

问题


For concurrency and ensuring the integrity of the data, how would you obtain a mutual-exclusion lock for a given object? Would you need to use locking within the database, or a file, or does PHP support something like this?


回答1:


PHP doesn't support multithreading so there's no locking mechanism for objects. If you want to lock a file you could use flock for that. There's no need to lock database as database engines usually can handle multiple connections.




回答2:


Bare in mind PHP is not multithreaded, so it's unlikely you need anything like this... however, may be needed if you use shared memory, or any other external resources. In such case use smaphores:

http://www.php.net/manual/en/function.sem-acquire.php

http://www.php.net/manual/en/function.sem-get.php

http://www.php.net/manual/en/function.sem-release.php




回答3:


flock for files.

If you are wanting to use lock in the database, then you would need to use the lock features for those databases. Almost all databases use some form of lock mechanism.

nothing for objects




回答4:


It has semaphore support

It has flock http://www.php.net/manual/en/function.flock.php

You can do table locking in MySQL.




回答5:


Like others have answered, since PHP is not multithreaded you do not need to lock on objects. However, if you need to lock on the database you might want to look to transactions. There are many tutorials for doing transactions with PHP and MySQL (and probably for other RMDBS as well).




回答6:


PHP can run in multi-threaded environments. Also multiple simultaneous processes can be running, even if the web server is not using multiple threads.

In this case, concurrency problems can still happen.

If you want something similar to lock to solve concurrency problems, you can use semaphores: http://www.php.net/manual/en/function.sem-acquire.php



来源:https://stackoverflow.com/questions/2222551/what-is-equivalent-of-the-c-sharp-lock-statement-in-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!