Я хотел сделать то же самое, чтобы получать уведомления при каждом попадании моего резюме.
С flush () после всех отправленных данных затем выполняются операции с БД и почтой: страница на клиенте полностью отображается, но индикатор выполнения загрузки все еще присутствует, пока сценарий не будет полностью завершен.
Я хотел сохранить весь материал на стороне сервера (чтобы сгенерированный HTML-файл можно было без проблем использовать в автономном режиме без ошибок), чтобы JS не был вариантом.
В конце концов я просто добавил строку с параметрами в текстовый файл, каждую минуту добавлял задание cron, которое сравнивает размер этого файла с последней отправленной версией, и этот скрипт bash обрабатывает все длинные функции, пока страница 9k все еще загружается и отображает в доли секунды.
К сожалению, этот метод все еще имеет задержку до 1 минуты, но все еще прост:
#!/bin/sh
FLOG=/home/web/traceur/cvaccess.txt
if [ -e $FLOG ]; then
if [ ! -e $FLOG.sent ]; then touch $FLOG.sent; fi;
SENT_LINES=$(wc -l $FLOG.sent | cut -d " " -f 1)
# No disk write if no new-data
if [ $(wc -l $FLOG | cut -d " " -f 1) -gt $SENT_LINES ]; then
cp -f $FLOG $FLOG.intr
NEW_LINES=$(wc -l $FLOG.intr | cut -d " " -f 1)
TO_SEND=$(( $NEW_LINES - $SENT_LINES ))
tail -n $TO_SEND $FLOG.intr > $FLOG.diff
mailx -s "Nouvelle consultation du CV" -r "HAL <hal@jmd-tech.com>" jmarodon@jmd-tech.com < $FLOG.diff
rm $FLOG.diff
mv -f $FLOG.intr $FLOG.sent
fi
fi
А страница находится по адресу:
http://www.jmd -tech.com / cv-julien-marodon.html , код PHP является не чем иным, как этими тремя строками в конце ранее простого HTML-файла:
<?php
// Enregistrement log
$ligne=$_SERVER["REMOTE_ADDR"]."\t".$_SERVER["HTTP_USER_AGENT"]."\t".$_SERVER["HTTP_REFERER"]."\t".date("Y-m-d H:i:s");
$fic=fopen("/home/web/traceur/cvaccess.txt","a");
if ($fic) { fwrite($fic,$ligne."\n"); fclose($fic); }
?>
Если я хотел сделать почти мгновенную (<1 с) или 10-секундную версию с задержкой, я думаю, что лучше всего было бы использовать демон вместо задания cron и какое-то межпроцессное взаимодействие, вероятно, прослушивающий сокет, который PHP-скрипт fsockopen () для отправки данных и закрытия (быстро), затем демон самостоятельно выполняет длинные операции. </p>