Home>Article>Backend Development> What is the method to implement progress bar in php

What is the method to implement progress bar in php

James Bond
James Bond Original
2020-11-06 15:09:43 2574browse

The method for php to implement the progress bar is: 1. Use ajax to request the address of the logical processing; 2. During the logical processing, use the session to save the processing progress; 3. Use ajax to request another address for querying the progress. , thereby achieving real-time feedback.

What is the method to implement progress bar in php

There are two main ways to implement the progress bar in php. One is to use "output buffer control" to directly output the progress bar, and the other is the ajax method.

(Learning video recommendation:java course)

First let’s talk about the “output buffer control” method:

This method mainly uses several functions of PHP Buffering function, this method can be run directly without changing the configuration file. The code is posted below:

正在处理...
0%%
'; echo sprintf($html, $width+8, $width); echo ob_get_clean(); //获取当前缓冲区内容并清除当前的输出缓冲 flush(); //刷新缓冲区的内容,输出 $length = 11; for($i=0; $i<$length; $i++) { sleep(rand(1,2)); $proportion = ($i+1)/$length; if($i+1 == $length){ $msg = '同步完成'; }else{ $msg = '正在同步第' . ($i+1) . '个用户'; } $script = ''; echo sprintf($script, intval($proportion*100), intval(($i+1)/$length)*$width, $msg); echo ob_get_clean(); //获取当前缓冲区内容并清除当前的输出缓冲 flush(); //刷新缓冲区的内容,输出 }

The "ajax method" is a little more troublesome. The logic of this method is to use ajax to request first (preferably It is the address of "logical processing" (asynchronous request). During the logical processing, use session or other storage media (such as memcache, redis, etc.) to save the processing progress, and use ajax to request (preferably a synchronous request) another address to query the progress. , to achieve real-time feedback.

The code is as follows:

First is the html file

     同步 

test.php file

 intval($proportion*100), 'progress' => intval($width*($i+1)/$length), 'msg' => $msg ); session_start(); $_SESSION['now_percent' . $timestamp] = $data; session_write_close(); //释放session锁 } echo json_encode(array( 'code' => 10000, 'data' => $data ));

test1.php

 10001, 'msg' => '正在处理...' ));exit; }else{ echo json_encode(array( 'code' => 10000, 'data' => $now_percent ));exit; }

Supplement:

1. The reason why setTimeout is used instead of setinterval to check regularly is because if the set time is too short and the request response time is too long, the display will be chaotic.

2. After using the session, be careful to release it in time, otherwise the query will be waiting because the session is locked. It is best to release it after use.

Related recommendations:php training

The above is the detailed content of What is the method to implement progress bar in php. For more information, please follow other related articles on the PHP Chinese website!

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
Previous article:How to convert time format to timestamp in php? Next article:How to convert time format to timestamp in php?

Related articles

See more