suchen
HeimBackend-EntwicklungPHP-Tutorial一个php的页面缓存类

  1. /* $cache = new Cache("../cache/",20); // 构造函数,创建缓存类对象

  2. $cache->PutCache(); // 倒出缓存
  3. */
  4. class Cache
  5. {
  6. private $CacheDir = ’Cache’; /* 缓存目录 */
  7. private $SetTimeOut = 10; /* 缓存过期时间 */
  8. private $SetExt = ’.cache’; /* 缓存文件后缀名 */
  9. private $CacheFileUrl = ’’; /* 缓存文件所在地址 */
  10. private $CacheConfigFile = ’’; /* 缓存文件配置信息 */
  11. public $LastUnixTimePoke = 0; /* 上一次缓存的 Unix 时间戳 */

  12. public $CurrentUnixTimePoke = 0;/* 当前缓存的 Unix 时间戳 */
  13. public $NextUnixTimePoke = 0; /* 下一次缓存的 Unix 时间戳 */
  14. public $UnixNowToNext = 0; /* 现在和下一次缓存相差的 Unix 时间戳 */
  15. public $LastTimePoke = 0; /* 上一次缓存的时间 */

  16. public $CurrentTimePoke = 0;/* 当前缓存的时间 */
  17. public $NextTimePoke = 0; /* 下一次缓存的时间 */
  18. public $DataLength = 0; /* 缓存区内容长度 */

  19. public $CacheToPage = ’’; /* 缓存文件内容 */
  20. private $SplitTeam = false; /* 是否分组存放Cache文件 */
  21. public $Cache = false; /* 是否需要缓存,用户外界判断 */

  22. private $_IsCache = false; /* 是否能够缓存 */

  23. public function Cache($SetTimeOut = 20,$CacheDir = ’Cache’,$SplitTeam = false,$SetExt = ’.cache’)

  24. {
  25. $this->CacheDir = $CacheDir;
  26. $this->SplitTeam = $SplitTeam;
  27. if(!is_numeric($SetTimeOut))
  28. {
  29. $this->ErrResponse(’缓存过期时间设置无效’);
  30. return false;
  31. } else {
  32. $this->SetTimeOut = $SetTimeOut;
  33. }
  34. $this->SetExt = $SetExt;
  35. /* 缓存开始 */

  36. ob_clean();
  37. ob_start();
  38. ob_implicit_flush(0);
  39. $this->CreateCache();
  40. return true;
  41. }
  42. private function CreateCache()

  43. {
  44. $_CacheFile = str_replace(’.’,’_’,basename($_SERVER[’PHP_SELF’])) . ’_’ .
  45. md5(basename($_SERVER[’PHP_SELF’])) . $this->SetExt;
  46. $_CacheConfig = str_replace(’.’,’_’,basename($_SERVER[’PHP_SELF’])) . ’_’ . ’.cof’;
  47. if(!file_exists($this->CacheDir))

  48. {
  49. mkdir($this->CacheDir,0777);
  50. }
  51. if($this->SplitTeam)

  52. {
  53. $_CacheConfigDir = $this->CacheDir . str_replace(’.’,’_’,basename($_SERVER[’PHP_SELF’])) . ’_/’;
  54. if(!file_exists($_CacheConfigDir))
  55. {
  56. mkdir($_CacheConfigDir,0777);
  57. }
  58. $_CacheUrl = $this->CacheDir . $_CacheConfigDir . $_CacheFile;
  59. $_CacheConfigUrl = $this->CacheDir . $_CacheConfigDir . $_CacheConfig;
  60. } else {
  61. $_CacheUrl = $this->CacheDir . $_CacheFile;
  62. $_CacheConfigUrl = $this->CacheDir . $_CacheConfig;
  63. }
  64. if(!file_exists($_CacheUrl))

  65. {
  66. $hanld = @fopen($_CacheUrl,"w");
  67. @fclose($hanld);
  68. }
  69. if(!file_exists($_CacheConfigUrl))

  70. {
  71. $hanld = @fopen($_CacheConfigUrl,"w");
  72. @fclose($hanld);
  73. }
  74. $this->CacheConfigFile = $_CacheConfigUrl;

  75. $this->CacheFileUrl = $_CacheUrl;
  76. $this->CheckCache();
  77. return true;
  78. }
  79. private function CheckCache()

  80. {
  81. $_FileEditTime = @filemtime($this->CacheFileUrl);
  82. $_TimeOut = $this->SetTimeOut;
  83. $_IsTimeOut = $_FileEditTime $_TimeOut;
  84. $this->LastUnixTimePoke = $_FileEditTime;

  85. $this->NextUnixTimePoke = $_IsTimeOut;
  86. $this->CurrentUnixTimePoke = time();
  87. $this->UnixNowToNext = $this->NextUnixTimePoke - time();
  88. $this->LastTimePoke = date("Y-m-d H:i:s",$_FileEditTime);

  89. $this->NextTimePoke = date("Y-m-d H:i:s",$_IsTimeOut);
  90. $this->CurrentTimePoke = date("Y-m-d H:i:s",time());
  91. $_TxtInformation = "上次缓存时间戳: $this->LastUnixTimePoke ";

  92. $_TxtInformation .= "当前缓存时间戳: $this->CurrentUnixTimePoke ";
  93. $_TxtInformation .= "下次缓存时间戳: $this->NextUnixTimePoke ";
  94. $_TxtInformation .= "上次缓存时间: $this->LastTimePoke ";

  95. $_TxtInformation .= "当前缓存时间: $this->CurrentTimePoke ";
  96. $_TxtInformation .= "下次缓存时间: $this->NextTimePoke ";
  97. $_TxtInformation .= "距离下次缓存戳: $this->UnixNowToNext ";

  98. $handl = @fopen($this->CacheConfigFile,’w’);

  99. if($handl)
  100. {
  101. @fwrite($handl,$_TxtInformation);
  102. @fclose($handl);
  103. }
  104. if($_IsTimeOut >= time())

  105. {
  106. $this->GetCacheData();
  107. }
  108. }
  109. private function ClearCacheFile()

  110. {
  111. @unlink($this->CacheFileUrl);
  112. @unlink($this->CacheConfigFile);
  113. }
  114. public function PutCache()

  115. {
  116. $this->DataLength = ob_get_length();
  117. $PutData = ob_get_contents();
  118. if(!file_exists($this->CacheFileUrl))
  119. {
  120. $CreateOK = $this->CreateCache();
  121. if(!$CreateOK)
  122. {
  123. $this->ErrResponse(’检查缓存文件时产生错误,缓存文件创建失败’);
  124. return false;
  125. }
  126. } else {
  127. $hanld = @fopen($this->CacheFileUrl,"w");
  128. if($hanld)
  129. {
  130. if(@is_writable($this->CacheFileUrl))

  131. {
  132. @flock($hanld, LOCK_EX);
  133. $_PutData = @fwrite($hanld,$PutData);
  134. @flock($hanld, LOCK_UN);
  135. if(!$_PutData)
  136. {
  137. $this->ErrResponse(’无法更改当前缓存文件内容’);
  138. return false;
  139. } else {
  140. @fclose($hanld);
  141. return true;
  142. }
  143. } else {
  144. $this->ErrResponse(’缓存文件不可写’);
  145. return false;
  146. }
  147. } else {
  148. $this->ErrResponse(’打开缓存文件发生致命错误’);

  149. return false;
  150. }
  151. }
  152. }
  153. public function GetCacheData()

  154. {
  155. $hanld = @fopen($this->CacheFileUrl,"r");
  156. if($hanld)
  157. {
  158. if(@is_readable($this->CacheFileUrl))
  159. {
  160. $this->CacheToPage = @file_get_contents($this->CacheFileUrl);
  161. $IsEmpty = count(file($this->CacheFileUrl)); //判断缓存文件是否为空
  162. if($IsEmpty > 0)

  163. {
  164. echo $this->CacheToPage;
  165. @fclose($hanld);
  166. ob_end_flush();
  167. exit();
  168. }
  169. } else {
  170. $this->ErrResponse(’读取缓存文件内容失败’);
  171. return false;
  172. }
  173. } else {
  174. $this->ErrResponse(’打开缓存文件失败’);
  175. return false;
  176. }
  177. }
  178. private function ErrResponse($Msg)

  179. {
  180. echo $Msg;
  181. }
  182. }
  183. ?>
复制代码


Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Wie können Sie vor SPRECTS-Angriffen (XSS) schützen?Wie können Sie vor SPRECTS-Angriffen (XSS) schützen?Apr 23, 2025 am 12:16 AM

Um die Anwendung vor Sitzungsangriffen im Zusammenhang mit den Sitzungen zu schützen, sind folgende Maßnahmen erforderlich: 1. Stellen Sie die HTTPonly- und sicheren Flags ein, um die Sitzungs Cookies zu schützen. 2. Exportcodes für alle Benutzereingaben. 3. Implementieren Sie die Inhaltssicherheitsrichtlinie (CSP), um die Skriptquellen einzuschränken. Durch diese Richtlinien können Sitzungsangriffe im Zusammenhang mit Sitzungen effektiv geschützt und Benutzerdaten sichergestellt werden.

Wie können Sie die PHP -Sitzungsleistung optimieren?Wie können Sie die PHP -Sitzungsleistung optimieren?Apr 23, 2025 am 12:13 AM

Methoden zur Optimierung der PHP -Sitzungsleistung gehören: 1. Start der Verzögerung der Sitzung, 2. Verwenden Sie Datenbank zum Speichern von Sitzungen, 3. Kompress -Sitzungsdaten, 14. Sitzungslebenszyklus verwalten und 5. Sitzungsfreigabe implementieren. Diese Strategien können die Effizienz von Anwendungen in hohen Parallelitätsumgebungen erheblich verbessern.

Wie lautet die Konfigurationseinstellung von Session.gc_maxlifetime?Wie lautet die Konfigurationseinstellung von Session.gc_maxlifetime?Apr 23, 2025 am 12:10 AM

Thesession.gc_maxlifetimesettingInphpdeterminesthelifspanofSessionData, setInseconds.1) ItsconfiguredInphp.iniorviaini_Set (). 2) AbalanceIsneedToAvoidPerformanceSandunexexwortedyg -Probablogouts

Wie konfigurieren Sie den Sitzungsnamen in PHP?Wie konfigurieren Sie den Sitzungsnamen in PHP?Apr 23, 2025 am 12:08 AM

In PHP können Sie die Funktion Session_name () verwenden, um den Sitzungsnamen zu konfigurieren. Die spezifischen Schritte sind wie folgt: 1. Verwenden Sie die Funktion Session_name (), um den Sitzungsnamen wie Session_name ("my_Session") festzulegen. 2. Nachdem Sie den Sitzungsnamen festgelegt haben, call Session_start (), um die Sitzung zu starten. Das Konfigurieren von Sitzungsnamen kann Sitzungsdatenkonflikte zwischen mehreren Anwendungen vermeiden und die Sicherheit verbessern, aber auf die Einzigartigkeit, Sicherheit, Länge und Festlegen des Zeitpunkts der Sitzungsnamen achten.

Wie oft sollten Sie Sitzungs -IDs regenerieren?Wie oft sollten Sie Sitzungs -IDs regenerieren?Apr 23, 2025 am 12:03 AM

Die Sitzungs -ID sollte regelmäßig bei Anmeldung, vor sensiblen Operationen und alle 30 Minuten regeneriert werden. 1. Regenerieren Sie die Sitzungs -ID, wenn Sie sich anmelden, um festgelegte Angriffe zu verhindern. 2.. Genieren Sie vor sensiblen Operationen, um die Sicherheit zu verbessern. 3. Die regelmäßige Regeneration reduziert das langfristige Nutzungsrisiko, aber die Benutzererfahrung muss abgewogen werden.

Wie setzen Sie die Session Cookie -Parameter in PHP ein?Wie setzen Sie die Session Cookie -Parameter in PHP ein?Apr 22, 2025 pm 05:33 PM

Das Einstellen von Sitzungs -Cookie -Parametern in PHP kann über die Funktion Session_set_cookie_params () erreicht werden. 1) Verwenden Sie diese Funktion, um Parameter wie Ablaufzeit, Pfad, Domänenname, Sicherheitsflag usw. Zu setzen; 2) Call Session_start (), um die Parameter wirksam zu machen; 3) Parameter dynamisch entsprechend den Anforderungen wie dem Benutzeranmeldestatus des Benutzers einstellen. 4) Achten Sie darauf, sichere und httponly -Flags festzulegen, um die Sicherheit zu verbessern.

Was ist der Hauptzweck bei der Verwendung von Sitzungen in PHP?Was ist der Hauptzweck bei der Verwendung von Sitzungen in PHP?Apr 22, 2025 pm 05:25 PM

Der Hauptzweck bei der Verwendung von Sitzungen in PHP besteht darin, den Status des Benutzers zwischen verschiedenen Seiten aufrechtzuerhalten. 1) Die Sitzung wird über die Funktion Session_start () gestartet, wodurch eine eindeutige Sitzungs -ID erstellt und im Benutzer Cookie gespeichert wird. 2) Sitzungsdaten werden auf dem Server gespeichert, sodass Daten zwischen verschiedenen Anforderungen wie Anmeldestatus und Einkaufswagen -Inhalten übergeben werden können.

Wie können Sie Sitzungen über Subdomains teilen?Wie können Sie Sitzungen über Subdomains teilen?Apr 22, 2025 pm 05:21 PM

Wie teile ich eine Sitzung zwischen Subdomains? Implementiert durch Einstellen von Sitzungs Cookies für gemeinsame Domainnamen. 1. Setzen Sie die Domäne des Sitzungs -Cookie auf .example.com auf der Serverseite. 2. Wählen Sie die entsprechende Sitzungsspeichermethode wie Speicher, Datenbank oder verteiltes Cache. 3. Übergeben Sie die Sitzungs -ID über Cookies, und der Server ruft und aktualisiert die Sitzungsdaten basierend auf der ID.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!