За последние 24 часа нас посетили 41048 программистов и 1812 роботов. Сейчас ищут 852 программиста ...

Цикличные проверки взамен оработчика события

Тема в разделе "PHP для новичков", создана пользователем lohmatiy, 16 мар 2008.

  1. lohmatiy

    lohmatiy Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    11
    Симпатии:
    0
    глобальная задача - on-line отображение текстового файла в браузере. (т.е. сделал Ctrl+S на серваке, а F5 в клиенте не нада))))
    предистория:
    с клиента первым запросом получаю содержимое файлика, вторым - его filemtime. тут всё ок )

    далее делаю запрос этому скрипту:

    PHP:
    1. <?php
    2. function freshCheck($file_url, $file_last_time) {
    3.     // Получаем время последнего изменения файла на сервере
    4.     $file_next_time = filemtime($file_url);
    5.     // Сравниваем
    6.     if($file_last_time == $file_next_time) {
    7.         sleep(1);
    8.         freshCheck($file_url, $file_last_time);
    9.     }
    10.     else {
    11.         echo "rotten";
    12.     }
    13. }
    14.  
    15. // Получаем относительный адрес зарашиваемого файла
    16. $file_url = "../".$_GET['file'];
    17. // Получаем время последнего изменения файла на клиенте
    18. $file_last_time = $_GET['file_time'];
    19. // Запускаем цикличные проверки
    20. freshCheck($file_url, $file_last_time);
    21. ?>
    от него хочу одного - пусть крутится себе по циклу, а когда поймает изменение filemtime сделает ответ клиенту echo "rotten";

    есть идеи лучше? цель - не отдавать реквеста, пока не измениться файл.

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

    возможно, дело не в бабине ) у реквеста оганичена продолжительность жизни? или допустимо ждать ответа сутками ))))

    заранее пасибы!
     
  2. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Эм... Я, конечно, не спец, но мне кажется, ты подвешиваешь исполнение скрипта. А значит клиенту ничего не передаётся вообще. А значит скрипт тупо висит и не дёргается... ИМХО, это нужно делать на яваскрипте. Раз в секунду запускать функцию, которая через ПХП скрипт проверит как там файл. И если файл изменился - выполнит действие.

    Но это имхо...
     
  3. lohmatiy

    lohmatiy Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    11
    Симпатии:
    0
    есть другие решения без зависания?

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

    обрабатывать изменение файла нужно на серваке! кто чё посоветует?
     
  4. Anonymous

    Anonymous Guest

    какой трафик?
    Вам вообще надо про HEAD запросы почитать, имхо. Оно то что вам нужно...
     
  5. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    lohmatiy
    Смените аватару на фото или удалите, правила читать надо.
     
  6. lohmatiy

    lohmatiy Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    11
    Симпатии:
    0
    трафик между клиентом и сервером, при постоянных запросах скрипту проверки свежести файла.

    head запросы посморел... пасиба! полезно )
    однако вопрос не в этом!
    вопрос касается только php! а именно, как заставить скрипт отвечать в момент изменения файлика???
     
  7. Anonymous

    Anonymous Guest

    и сколько его?
     
  8. lohmatiy

    lohmatiy Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    11
    Симпатии:
    0
    ~20кб/мин

    я считаю много, просто за то, что смотреть неизменяющийся файлик. ведь кроме него есть и запросы на обновление файлика )
     
  9. Clone

    Clone Guest

    Ну сделай раз в 5 секунд... Будет 4кб\мин... 4кб даже по меркам моего недешёвого инета оочень немного.
     
  10. sword dancer

    sword dancer Активный пользователь

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
  11. lohmatiy

    lohmatiy Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    11
    Симпатии:
    0
    почему так упорно никто не предлагает решения на php???
    раз в 5 сек не тема... не люблю экстенсивный подход )))
     
  12. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    Патамушта у php есть max_execution_time.
     
  13. Anonymous

    Anonymous Guest

    потому что пхп пофиг на то чо у тебя происходит на клиенте. К этому моменту он уже отработал и отключился.
     
  14. RomanBush

    RomanBush Активный пользователь

    С нами с:
    5 дек 2007
    Сообщения:
    798
    Симпатии:
    0
    Адрес:
    200 км от Москвы
    +1
     
  15. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Не можно, конечно, прийти на форум по 3Д Максу и добиваться, чтобы кто-нибудь ответил, как с помощью 3Д Макса написать CMS. Всякое бывает... Вдруг можно...
     
  16. lohmatiy

    lohmatiy Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    11
    Симпатии:
    0
    на моём хостинге
    max_execution_time = 30
    причём, помнится нормально отрабатывали скрипты и по 10мин

    однако скрипт зависает ещё до истечения этого времени.
    вопрос: возможно ли заставить ,приведённый выше скрипт, корректно отработать свои 30сек ?
     
  17. lohmatiy

    lohmatiy Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    11
    Симпатии:
    0
    отдельное пасиба! 304 - тема )
    если всё же не удастся найти серверного решения, буду с клиента смотреть статус...

    вот нашёл клиентское решение ) http://www.openhosting.co.uk/articles/webdev/6004/

    правда дорабатывать придётся много ) зато идея прозрачна )))

    думаю можно закрыть тему! усем пасибы!
     
  18. Anonymous

    Anonymous Guest

     
  19. sword dancer

    sword dancer Активный пользователь

    С нами с:
    17 фев 2008
    Сообщения:
    295
    Симпатии:
    0
    причём тут головозапросы? тут нужно не только узнать об изменениях, но и скачать обновлённую версию.
     
  20. lohmatiy

    lohmatiy Активный пользователь

    С нами с:
    16 мар 2008
    Сообщения:
    11
    Симпатии:
    0
    в самом начале написал, что получать файлик я уже умею.....
    теперь решил как буду узнавать, что пора ) (при пустом ответе со статусом 304)
    вот и всё... уже тэст пашет...

    теперь осталось продумать часности (определять, на моём домене файлик или нет (еслт да - получать его исходник), автоматом подбирать скорость обновления (в зависимости от скорости отклика))