Home  >  Article  >  Backend Development  >  PHP technology Session hashing and expired recycling_PHP tutorial

PHP technology Session hashing and expired recycling_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 10:57:021066browse

Session, in computers, especially in network applications, is called a "session".

A server has relatively large traffic. Due to the needs of the program, the session expiration time is set to 3 hours, resulting in the accumulation of nearly 200,000 session files under /tmp. This in turn leads to a sharp increase in CPU usage by the kernel. Because session reading and writing involves random reading and writing of a large number of small files, and they are concentrated in one directory, iowait also increases sharply.

First consider putting the session into memory

The easiest way is to mount /tmp as a tmpfs file system, that is, in memory

The second step is to store the session in a different directory

php itself supports multi-level hashing of session

In php.ini, change

<ol class="dp-c"><li class="alt"><span><span>session.save_path = /tmp;  </span></span></li></ol>

is changed to

<ol class="dp-c"><li class="alt"><span><span>session.save_path = </span><span class="string">"2;/tmp/session"</span><span>  </span></span></li></ol>

means to store the session in the /tmp/session folder. And it uses 2 and hashing.

Save and exit, restart php after the third step is completed

The third step, create the session storage folder

php will not automatically go there Create these folders, but some scripts for creating the folders are provided in the source file. The following script is also easy to use

<ol class="dp-c">
<li class="alt"><span><span>I=</span><span class="string">"0 1 2 3 4 5 6 7 8 9 a b c d e f"</span><span>   </span></span></li>
<li>
<span class="keyword">for</span><span> acm in </span><span class="vars">$I</span><span>;   </span>
</li>
<li class="alt">
<span class="keyword">do</span><span>   </span>
</li>
<li>
<span class="keyword">for</span><span> x in </span><span class="vars">$I</span><span>;   </span>
</li>
<li class="alt">
<span class="keyword">do</span><span>   </span>
</li>
<li>
<span class="func">mkdir</span><span> -p /tmp/session/</span><span class="vars">$acm</span><span>/</span><span class="vars">$x</span><span>;   </span>
</li>
<li class="alt"><span>done;   </span></li>
<li><span>done   </span></li>
<li class="alt">
<span class="func">chown</span><span> -R nobody:nobody /tmp/session   </span>
</li>
<li>
<span class="func">chmod</span><span> -R 1777 /tmp/session </span>
</li>
</ol>

Because /tmp is used for memory, all files in it will be lost after the server is restarted, so you need to add the above script to /etc/rc.local , and should be placed before starting php

The fourth step, session recycling

The session will expire after session.gc_maxlifetime, but will not be deleted immediately , after a long time, it will cause /tmp space to occupy a lot of space. I'm too lazy to study the specific deletion algorithm. The following command can delete expired sessions. The expiration time I define here is 3 hours.

<ol class="dp-c"><li class="alt"><span><span>find /tmp/session -amin +180 -</span><span class="func">exec</span><span> rm -rf {} ;  </span></span></li></ol>

Put it into cron, execute it every 10 minutes, and you’re done.

This article introduces Session hashing and expired recycling in four steps. I hope it will be helpful to you.


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/445794.htmlTechArticleSession, in computers, especially in network applications, is called a session. The traffic of a server is relatively large. Due to the needs of the program, the session expiration time is set to 3 hours, resulting in...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn