Home > Backend Development > PHP Tutorial > How to delete cache regularly in php? ?

How to delete cache regularly in php? ?

WBOY
Release: 2016-07-06 13:52:17
Original
1328 people have browsed it

php runs in the windows environment:
For example:
When setting the user's avatar, the user uploads the source file, and the server saves the source file and the modified file. The source file is stored in the tmp_file file directory, and the modified file is placed in the header_file directory.

I want to clean the source files saved under tmp_file regularly? ? Don't know how to do it? ? Is it possible to achieve the following:

<code>$file=$_FILES['upload_img'];
// 保存源文件
move_uploaded_file($file['tmp_name'],'tmp_file/'.$file['name']);
// 在对源文件做相应处理(图片裁切、缩放之类的操作)
$cav=imagecreatefromjpeg('tmp_file/'.$file['name']);
.......
// 保存处理好的文件
imagejpeg($cav,'header_file/'.$file['name']);

// 定时清理掉对应源文件,这一步怎么实现??
unlink('tmp_file/'.$file['name']);
</code>
Copy after login
Copy after login

If using:

<code>   set_time_limit(0);
   ignore_user_abort();
   sleep(60);
   unlink('tmp_file/'.$file['name']);
</code>
Copy after login
Copy after login

It can indeed be cleaned regularly. However, after executing it once, you must wait 60s before executing it again! If suddenly there are a large number of pictures to be processed in a short period of time, it will be blocked and cannot be executed.

How to enable PHP to execute an additional JS script like the JS work thread to process threads that take a lot of time without causing the main thread to become stuck and not execute? ?

Reply content:

php runs in the windows environment:
For example:
When setting the user's avatar, the user uploads the source file, and the server saves the source file and the modified file. The source file is stored in the tmp_file file directory, and the modified file is placed in the header_file directory.

I want to clean the source files saved under tmp_file regularly? ? Don't know how to do it? ? Is it possible to achieve the following:

<code>$file=$_FILES['upload_img'];
// 保存源文件
move_uploaded_file($file['tmp_name'],'tmp_file/'.$file['name']);
// 在对源文件做相应处理(图片裁切、缩放之类的操作)
$cav=imagecreatefromjpeg('tmp_file/'.$file['name']);
.......
// 保存处理好的文件
imagejpeg($cav,'header_file/'.$file['name']);

// 定时清理掉对应源文件,这一步怎么实现??
unlink('tmp_file/'.$file['name']);
</code>
Copy after login
Copy after login

If using:

<code>   set_time_limit(0);
   ignore_user_abort();
   sleep(60);
   unlink('tmp_file/'.$file['name']);
</code>
Copy after login
Copy after login

It can indeed be cleaned regularly. However, after executing it once, you must wait 60s before executing it again! If suddenly there are a large number of pictures to be processed in a short period of time, it will be blocked and cannot be executed.

How to enable PHP to execute an additional JS script like the JS work thread to process threads that take a lot of time without causing the main thread to become stuck and not execute? ?

Use crontab for scheduled tasks, this is the best choice.

PHP cannot do this in a web environment. Write a shell and then cronjob

What is the reason why you want to stay for 60 seconds? If you don’t have anything to consider, just put unlink at the end. In this scenario, I think there is no need to increase the complexity of the code.

Why not use memcache directly? It can automatically delete the timeout cache by itself

Save the upload time, and then determine the time difference between the current time and the upload time.

Delete if the time difference is greater than 60 seconds.

Obviously, the poster installed Windows and doesn’t want to install cgwin or use crontab. You can try:

``
if(random(1,10)==6){

<code>  // 扫目录 清文件</code>
Copy after login

}
``

I am just giving an example of random conditions,
You can use it yourself: time seed...touch time of a certain file...etc.
Every user will not have to wait...

Deleting hundreds of files is no problem.
If your disk I/O is particularly high and the server load is high
then it is better to do it in crontab.

  1. Windows scheduled tasks can also achieve the crontab effect (although it is a bit annoying that when automatic startup is turned on, it is very painful every time to change the server password)

If you must use ignore_user_abort, then set a unique flag in the database or redis

Related labels:
php
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template