Я хочу, чтобы мои суперглобальные переменные были доступны из всех моих сценариев, и я использую статические члены класса, чтобы добиться этого, но я обеспокоен тем, что, поскольку сервер php создает отдельный поток для каждого файла сценария и в некоторых из моих сценариев Я читаю или изменяю эти переменные, должны ли критические разделы моего кода быть защищены мьютекс-блокировками?
SuperGlobals.php
class MySuperGlobals {
public static $Variables=array("visited"=>array());
}
index.php
<?php
include "SuperGlobals.php";
array_push(MySuperGlobals::$Variables["visited"] ,"index");
echo MySuperGlobals::$Variables["visited"][count(MySuperGlobals::$Variables["visited"])-1];//last element
?>
page1.php
<?php
include "SuperGlobals.php";
array_push(MySuperGlobals::$Variables["visited"] ,"page1");
echo MySuperGlobals::$Variables["visited"][count(MySuperGlobals::$Variables["visited"])-1];//last element
?>
в приведенном выше примере является ли array_push потокобезопасным для статического члена (игнорируя эхо) и как насчет всего push и echo, если мы хотим защитить его, что должно быть сделано? я должен создать статический объект взаимного исключения в классе и заблокировать и разблокировать эти строки?
Задача ещё не решена.
Других решений пока нет …