получить вывод «во время» длинного цикла foreach, а не только в конце последнего элемента цикла

у меня есть долгие часы работы цикла foreach, который выводит правильно в конце, когда все элементы обрабатываются ..

    foreach ($matches[0] as $map_link) {
if ($map_link!='' && $i < $max_tags ) {
include('reg-process.php');
}

$i++;
}

Infact для каждого $ match [0], который содержит более 600 совпадений, включает
Страница ‘reg-process.php’, которая обрабатывает каждое совпадение по очереди, и после одного часа она завершает работу и выводит все результаты.
мне не нужно ждать до последнего элемента, чтобы увидеть результаты, поэтому, пока цикл работает после обработки каждого элемента, он может отображаться …
так что опять мне нужно каждый раз, когда цикл включает в себя распечатку страницы ‘reg-process.php’
результат, чтобы не дойти до последнего пункта, потом все распечатать сразу .. что-то вроде продолжения?

-2

Решение

включают не следует использовать так, как вы его используете, его следует использовать для включения функциональности или уменьшения сложности одного файла, а не для неправильного использования его в качестве функции. Поэтому, во-первых, избавьтесь от включения, так как это приведет к проблемам в определенный момент времени (то есть вы не можете включать один файл несколько раз, если он содержит функции).

Есть разные способы получить то, что вы хотите, вот только две возможности:

1.) Файловое ведение журнала:

<?php
// file: register_process.php
function registerProgress($map_link)
{
// YOUR CODE
// ...
// assuming that the result of your code is a string variable that can be logged
file_put_contents('registration.log', $logResult, FILE_APPEND);
}

include('register_progress.php');

foreach ($matches[0] as $map_link) {
if ($map_link!='' && $i < $max_tags ) {
registerProgress($map_link);
}
$i++;
}

2.) Переключитесь на ajax:

в случае, если вы запускаете сценарий как часть веб-приложения (а не как консольное приложение), вы можете переписать свой код для выполнения одного запроса страницы для каждой ссылки на карту.

Преимущества: вы получите видимый результат за каждый выполненный вызов, уменьшенное использование памяти скриптов, меньший риск тайм-аутов (из-за тайм-аутов PHP, веб-сервера или браузера).

Недостатки: требуется увеличение количества запросов к страницам и рефакторинг кода.

ob_flush() не будет работать, так как браузеры не анализируют содержимое ожидающего запроса страницы; вместо этого вам придется использовать сетевой сниффер, чтобы прочитать частично очищенный контент.

0

Другие решения

Вы не используете формат foreach с правильным синтаксисом. Идеальный код:

foreach ($arr as $value) {
$value = $value * 2;
}

Удостоверься что, $ матчей [0] это массив. Без массива это не сработает. Просто переписать свой код, надеюсь, будет работать правильно.

-1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector