Фоновое обновление через PHP?

Я не знаю, возможно ли это только с PHP, но мысль спросит здесь...

У меня действительно есть код PHP, который обновляет данные каждые 15 дней. моя проблема состоит в том, когда она обновляет весь процесс, занимающий больше чем 5 секунд, таким образом, пользователь должен ожидать до сделанных обновлений.

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

мой текущий код дан ниже:-

$result = $db->sql_query("SELECT * FROM data1,data2,data3,data4 WHERE person='" .$name. "'");

$row = $db->sql_fetchrow($result);
$day = $row['regtime'];
$days = (strtotime(date("Y-m-d")) - strtotime($row['regtime'])) / (60 * 60 * 24);
if($row > 0 && $days < 15){

$row = ['name'];
$row = ['age'];
$row = ['place'];
$row = ['address'];
$row = ['lat'];
$row = ['long'];
$row = ['geo'];
//etc
}else{ //do update
//insert into database
}
1
задан hakre 24 December 2012 в 22:57
поделиться

3 ответа

ok mathew,

предположение здесь в том, что у вас есть пустой div на странице с id=myStatusDiv. также предполагается, что у вас есть url/php файл /home/longprocess. добавьте jquery на страницу и затем в нижней части страницы добавьте следующее:

<script type="text/javascript">
    $(document).ready(function() {
        $.ajax({
            type: 'POST',
            data: "username=" + $("#username").val(),
            url: 'longprocess.php',
            beforeSend: function() {
                // you could also put a spinner img or whatever here too..
                $("#myStatusDiv").html("please wait, page being updated...");
            },
            success: function(result) {
                $("#myStatusDiv").html(result);
            }
        });
    });
</script>

в основном, когда dom загрузится, функция $.ajax будет тихо выполняться в бэкграунде. По завершении, в div myStatusDiv будет выведено сообщение о статусе, сгенерированное вашим методом longprocess. Это может быть что угодно, от простого сообщения до "почти" целого раздела на странице. Ваша php-страница должна будет искать только именованные параметры, отправленные через объект данных - т.е. в примере выше -> $name = $_POST['username'];

есть много примеров в сети и здесь в SO.

удачи (подсказка: ищите в google по запросу "php ajax jquery $_POST") ;)

jim

[edit] - конечно, вам придется включить ваши переменные $_POST в метод $,ajax.... Я сделал предположение, что у вас есть текстовое поле ввода с id=username. Опять же, есть много примеров, но вот быстрый, который я нашел для начала: http://www.talkphp.com/vbarticles.php?do=article&articleid=58&title=simple-ajax-with-jquery

1
ответ дан 2 September 2019 в 23:02
поделиться

mathew - я не буду комментировать код как таковой, достаточно сказать, что, надеюсь, он не содержится на самой странице. во всяком случае, с этим в сторону :). php / linux (насколько я знаю) не позволит вам создавать новые потоки, поэтому лучшим планом может быть вызов метода сервера через $ ajax. Таким образом, это не будет зависеть от пользователей страницы, и их страница будет отзывчивой.

Как я уже сказал, надеюсь, что приведенный выше код содержится в каком-то классе, доступном через URL-адрес. затем вы просто вызываете метод и возвращаете либо html-результат, либо какое-то простое сообщение в статусный div.

0
ответ дан 2 September 2019 в 23:02
поделиться

Вместо запуска обновления по запросу пользователя вы также можете запускать скрипт каждую ночь через задание cron. Таким образом, пользователя никогда не беспокоят.

1
ответ дан 2 September 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: