使用静态类成员作为超级全局变量的php线程安全

时间:2018-10-13 07:25:25

标签: php thread-safety mutex static-members superglobals

我想从我所有的脚本中访问自己的超全局变量,并且我使用静态类成员来实现这一目标,但我担心由于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单独线程安全(忽略echo),如果想要保护它,整个push和echo怎么办?我应该在该类中创建一个静态互斥对象并锁定和解锁这些行吗?

0 个答案:

没有答案