/ / php скрипт по-дълъг от максималното време за изпълнение (прогрес бар) - php, mysql, изпълнение-време

php скрипт по-дълъг от максималното време за изпълнение (лента за прогрес) - php, mysql, execution-time

В момента работя по малък проект, където някоиданните се събират от мрежата и системата създава някои отношения между тях. Разбира се, това не беше перфектно от самото начало, така че трябваше да направя скрипт, който актуализира всички връзки и връзки с актуализираните скриптове, които направих.

По принцип скриптът работи, но тъй като след това ще има хубав поглед, не е точно това, което искам.

Сценарият се нуждае от около 10 минути и защото ididnt просто искате да настроите max_execution_time от PHP мислех за друг метод. Вместо да зареждате 1000 sql записи наведнъж, аз го свалях до 200 наведнъж и просто го повторих със следващите 200, когато първият кръг приключи. Ето защо аз използвах php http_request. Просто ви показвам изчистена версия на скрипта:

require_once "HTTP/Request.php";
$max = $db->query("SELECT COUNT(id) as max FROM db_table");
$lower = $_POST["lower"] ? $_POST["lower"] : 0;
$plus = 250;
$entries = $db->query("SELECT * FROM db_table LIMIT {$lower},{$plus}");

foreach($entries as $entry){
DO SOME STUFF TO UPDATE THE RELATIONS BETWEEN THE DATA
}

$lower = $lower + $plus;

if($lower <= $max) {
$request = new HTTP_Request("path to the script");
$request->setMethod(HTTP_REQUEST_METHOD_POST);
$request->addPostData("lower", $lower);
$result = $request->sendRequest();
}

Това е то. Както казах, че работи, защото е нова заявка, така че да не е засегната от max_execution_time. Но браузърът е само зареждане и зареждане и зареждане и след известно време той приключва. Но, разбира се, не мога да покажа никакви обновени данни за нещо като лента за напредък.

Видях много записи с php flush (), но товаdidnt работа за мен, защото на (предполагам) глупав начин аз използван за решаване на проблема ми. Как бихте направили това, ако трябва да инсталирате нещо на уеб пространството и нямате възможност да промените максималното време за изпълнение или да инсталирате http_request?

Както казах, че по-късно трябва да изглежда като лента за напредък. Предполагам, че трябва да използвам ajax, и просто натиснете кръг на скрипта е на всеки кръг и актуализиране на прогрес бар чрез javascript.

Можеш ли да ми помогнеш?

Отговори:

0 за отговор № 1

Все още имате проблеми сmax_execution_time, тъй като страницата, която сте заявили от уеб браузъра, е винаги активна, тя не приключва докато HTTPRequests приключи.

header("Location: myscript.php?lower=$lower");