「クラス」について理解できません。説明してください
次のコードはプログラム内のクラス ファイル (lock.php) です。まず、lock.php の実際の機能について説明します。
未知の状況下で (私には理解できませんが)、index.php.lock などの .lock ファイルがキャッシュ フォルダーの下に生成されます。このファイルが表示されると、Web サイトのホームページを開くことができなくなります。開いている場合は、手動で削除し、ホームページを更新する必要があります。そうすれば、通常のキャッシュ ファイルindex.php がシステムを正常に開くように見えます。
この障害は時々発生しますが、ソースコードの作成者がなぜこの機能を設定したのか、どのような状況で発生するのかはまだわかりません。最終的なソースがわからないので、ソースコードの作成者に相談することもできません。
数日前、このクラスファイルlock.phpを削除し、Webサイトは正常に動作していましたが、index.php.lockファイルはもう存在しないと思っていましたが、今日再びシステムを開くことができなくなりました。通常のキャッシュ/インデックス .php キャッシュがなくなっています。このクラス ファイルを復元し、システムを更新してください。通常のキャッシュ/インデックス.php が表示されれば、システムは正常になります。
lock.php のソースコードは次のとおりです:
<?php<br /> <br /> class lock{<br /> private $num,$lock_marker,$lock_file,$timeout;<br /> public $islock;<br /> private function file_timeout(){<br /> if(file_exists($this->lock_file)){<br /> if(time()-filemtime($this->lock_file)>=$this->timeout){<br /> @unlink($this->lock_file);<br /> return true;<br /> }<br /> return false;<br /> }else return true;<br /> }<br /> function __construct($num=1,$timeout=3,$wait=false,$wait_time=0,$marker = ''){<br /> $this->num=$num;<br /> $marker ||$marker = $_SERVER['SCRIPT_FILENAME'];<br /> $marker = md5($marker);<br /> $this->lock_marker = $marker;<br /> $this->timeout=$timeout;<br /> $this->lock_file=d('./cache/lock/'.$this->lock_marker.$this->num.'.lock');<br /> if(file_exists($this->lock_file)){<br /> $this->islock=!$this->file_timeout();<br /> }else $this->islock=false;<br /> if(!$this->islock)touch($this->lock_file);<br /> else {<br /> if($wait){<br /> $wait_start=0;<br /> while(!$this->file_timeout()){<br /> if($wait_time>0){<br /> $wait_start+=100000;<br /> if($wait_start>$wait_time)break;<br /> }<br /> }<br /> file_exists($this->lock_file)&&@unlink($this->lock_file);<br /> touch($this->lock_file);<br /> $this->islock=false;<br /> }<br /> }<br /> }<br /> function __destruct(){<br /> $this->close();<br /> }<br /> public function close(){<br /> !$this->islock&&file_exists($this->lock_file)&&@unlink($this->lock_file);<br /> }<br /> }<br /> <br /> ?>