[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. kik8888

    kik8888 Elder - Старейшина

    Joined:
    29 Feb 2008
    Messages:
    45
    Likes Received:
    6
    Reputations:
    -4
    Первое, что пришло в голову:
    1) При запуске скрипта(отображающего сайт, и устанавливающего задержку на выполнение задания) в какой-либо файл(специально отведенный для этого) записывавем какое-либо значение, обозначающее, что нужно будет запустить mysql запрос и какой именно запрос + дополнительные необходимые параметры.
    Каждое задание пишем в отдельной строке файла, так легче анализировать, разделяем \r\n
    2) Создаем скрипт, который будет проверять этот файл и при наличии строчек(заданий), будет выполнять нужные задания в нужное время(обозначенное в задании), после выполнения задания, скрипт стирает строчку выполненного задания.
    3) Ставим этот скрипт на крон на каждую минуту выполнение.
    PS:
    а) если время задержки выполнения не слишком строгое и его можно подстроить под проверку кроном каждую минуту, то этот вариант вполне подходит.
    б) не забудь правильно настроить блокировку файла при записи и чтении из него заданий, а то можешь получить в файле кашу.
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Byrger Вам уже все сказали. Set_time_limit и ignore_user_abort + sleep + аякс оьращающийся на этот скрипт. Фразы "все перепробовал" без примеров кода - это значит напишите за меня а я попользую? Никто за вас ничего делать не будет. Напишите что вы делали мы вас подправим.
     
    _________________________
    1 person likes this.
  3. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Самый легкий способ это предложенный kik8888, и в крон ставить не обязательно, можно эту проверку засунуть в начало твоего скрипта
     
    2 people like this.
  4. kik8888

    kik8888 Elder - Старейшина

    Joined:
    29 Feb 2008
    Messages:
    45
    Likes Received:
    6
    Reputations:
    -4
    Можно, но тогда нужна большая посещаемость у сайта, чтобы эту проверку частенько запускали.
    Самый надежный вариант сделать и в кроне, и в начале всех скриптов сайта(например проинклудить в хедере(я надеюсь, что все шапку выносят в отдельный файл))
    Но также не нужно забывать про оптимизацию и делать все для минимума использования ресурсов.
     
    1 person likes this.
  5. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Крон тут вообще не нужен, при первом попавшемся заходе выполнятся все запросы, никто и не увидит что он выполнился сейчас а не 10 минут назад
     
  6. Byrger

    Byrger Elder - Старейшина

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    Аякс не пойдёт так-как нужна 100% уверенности что все пользователи смогут запустить таймер, а что у всех яваСкрипт был включен.... Крон не пойдёт-большая нагрузка если запускать каждую секунду (нужна точность) а чтоб в код скрипт проверки поместить тоже не дело-большая нагрузка если много народу и у каждого про выполнении любого сценария на сайте будет проверятся таймер и наоборот- если мало народу то не будет точности таймера
     
  7. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Точность будет, если нормально скрипт написать, все продумать(при помещении в скрипт проверки) базу использовать и все быстро будет, никакой нагрузки
     
  8. Byrger

    Byrger Elder - Старейшина

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    нет меня видимо опять не понимают, мне нужна точность. И мне нужен таймер по истечению которого выполнится задача, а не проверка на то есть или нет задач. Если каждый раз проверать по 10+ таблиц в бд но то есть или нет не выпОлненые задания а если там сотни заданий... нет это никак не выход из ситуации. У меня есть идея но Как сделать чтоб при нажатии кнопки выполнялся пхп сценарий и после того как сценариз закончился, он отправляет заПрос другому сценарию (как браузер). сорри за корявость текста, я с телефона
     
  9. kik8888

    kik8888 Elder - Старейшина

    Joined:
    29 Feb 2008
    Messages:
    45
    Likes Received:
    6
    Reputations:
    -4
    Сделай форму с кнопкой. Кнопка запустит скрипт, а в конце скрипта сделай запрос через сокеты(если это не должен видеть пользователь) или header("location: ....");(если нужно чтобы пользователь увидел результат этого запроса).
     
  10. Byrger

    Byrger Elder - Старейшина

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    А если не сложно то можите написать как через сокеты обратится к сценарию который на localhost/time.php (просто обратится к нему, а в нём у меня запрос к бд и таймер) , мне с телефона сложно и дорого искать =/
     
  11. heretic1990

    heretic1990 Elder - Старейшина

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    есть у кого аналог такого скрипта? http://yoip.ru/buttons.php
     
  12. [JavaScript]

    [JavaScript] Member

    Joined:
    14 Feb 2009
    Messages:
    45
    Likes Received:
    22
    Reputations:
    1
    PHP:
    <?php
    echo file_get_contents("http://localhost/time.php");
    ?>
     
    1 person likes this.
  13. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    Byrger
    PHP:
    <?php
    $s 
    fsockopen('127.0.0.1',80);
    fputs($s,"GET /time.php HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n");
    $answer '';
    while(!
    feof($s))
        
    $answer .= fread($s512);
    fclose($s);

    echo 
    $answer;
    ?>
     
  14. Byrger

    Byrger Elder - Старейшина

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    А как возможно передать по GET значение id допустим равное 25 (пробовал /time.php?id=25 но не получилось)
     
  15. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    В скрипте $id = $_GET['id']; писал?
     
  16. 5triker

    5triker Elder - Старейшина

    Joined:
    5 Apr 2007
    Messages:
    62
    Likes Received:
    41
    Reputations:
    1
    PHP:
    <?php 
    $s 
    fsockopen('127.0.0.1',80); 
    fputs($s,"GET /time.php?id=25 HTTP/1.1\r\nHost: localhost\r\nConnection: close\r\n\r\n"); 
    $answer ''
    while(!
    feof($s)) 
        
    $answer .= fread($s512); 
    fclose($s); 

    echo 
    $answer
    ?>
    если непашет значит либо криво написал , либо в time.php id криво определяется
     
  17. mr.Babay

    mr.Babay New Member

    Joined:
    14 Jan 2009
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Ребята, как бы лучше реализовать чтобы при попадании пользователя на страничку авто-определялся шаблон...
    Ну т.е. надо чтобы для пользователей заходящих с компьютеров один шаб, а для пользователей с мобил другой...
     
  18. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Только User-Agent анализируй
     
  19. Zitt

    Zitt Elder - Старейшина

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    mr.Babay, листай выше... не так лавно был пример..
     
  20. groundhog

    groundhog Elder - Старейшина

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Ничё листать не надо: http://wurfl.sourceforge.net/
     
Thread Status:
Not open for further replies.