Что эквивалентно оператору блокировки C# в PHP?


Для параллелизма и обеспечения целостности данных, как бы вы получили блокировку взаимного исключения для данного объекта? Вам нужно будет использовать блокировку в базе данных или файле, или PHP поддерживает что-то подобное?

Author: John Bubriski, 2010-02-08

5 answers

PHP не поддерживает многопоточность, поэтому для объектов нет механизма блокировки. Если вы хотите заблокировать файл, вы можете использовать для этого flock. Нет необходимости блокировать базу данных, так как ядра баз данных обычно могут обрабатывать несколько подключений.

 4
Author: RaYell, 2010-02-08 15:24:37

Имейте в виду, что PHP не многопоточен, поэтому вряд ли вам нужно что-то подобное... однако это может потребоваться, если вы используете общую память или любые другие внешние ресурсы. В таком случае используйте смафоры:

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

 0
Author: Johnco, 2010-02-08 15:24:25

Скопление файлов.

Если вы хотите использовать блокировку в базе данных, то вам нужно будет использовать функции блокировки для этих баз данных. Почти все базы данных используют ту или иную форму механизма блокировки.

Ничего для объектов

 0
Author: Sorantis, 2010-02-08 15:25:53

Он имеет поддержку семафоров

У него есть стадо http://www.php.net/manual/en/function .flock.php

Вы можете выполнить блокировку таблиц в MySQL.

 0
Author: Paul, 2010-02-08 15:29:25

Как и другие, ответили, поскольку PHP не многопоточен, вам не нужно блокировать объекты. Однако, если вам нужно заблокировать базу данных, вы можете обратиться к транзакциям. Существует множество руководств по выполнению транзакций с PHP и MySQL (и, возможно, для других RMDB).

 0
Author: Markus Johnsson, 2010-02-08 15:55:51