Первое, что пришло в голову: 1) При запуске скрипта(отображающего сайт, и устанавливающего задержку на выполнение задания) в какой-либо файл(специально отведенный для этого) записывавем какое-либо значение, обозначающее, что нужно будет запустить mysql запрос и какой именно запрос + дополнительные необходимые параметры. Каждое задание пишем в отдельной строке файла, так легче анализировать, разделяем \r\n 2) Создаем скрипт, который будет проверять этот файл и при наличии строчек(заданий), будет выполнять нужные задания в нужное время(обозначенное в задании), после выполнения задания, скрипт стирает строчку выполненного задания. 3) Ставим этот скрипт на крон на каждую минуту выполнение. PS: а) если время задержки выполнения не слишком строгое и его можно подстроить под проверку кроном каждую минуту, то этот вариант вполне подходит. б) не забудь правильно настроить блокировку файла при записи и чтении из него заданий, а то можешь получить в файле кашу.
Byrger Вам уже все сказали. Set_time_limit и ignore_user_abort + sleep + аякс оьращающийся на этот скрипт. Фразы "все перепробовал" без примеров кода - это значит напишите за меня а я попользую? Никто за вас ничего делать не будет. Напишите что вы делали мы вас подправим.
Самый легкий способ это предложенный kik8888, и в крон ставить не обязательно, можно эту проверку засунуть в начало твоего скрипта
Можно, но тогда нужна большая посещаемость у сайта, чтобы эту проверку частенько запускали. Самый надежный вариант сделать и в кроне, и в начале всех скриптов сайта(например проинклудить в хедере(я надеюсь, что все шапку выносят в отдельный файл)) Но также не нужно забывать про оптимизацию и делать все для минимума использования ресурсов.
Крон тут вообще не нужен, при первом попавшемся заходе выполнятся все запросы, никто и не увидит что он выполнился сейчас а не 10 минут назад
Аякс не пойдёт так-как нужна 100% уверенности что все пользователи смогут запустить таймер, а что у всех яваСкрипт был включен.... Крон не пойдёт-большая нагрузка если запускать каждую секунду (нужна точность) а чтоб в код скрипт проверки поместить тоже не дело-большая нагрузка если много народу и у каждого про выполнении любого сценария на сайте будет проверятся таймер и наоборот- если мало народу то не будет точности таймера
Точность будет, если нормально скрипт написать, все продумать(при помещении в скрипт проверки) базу использовать и все быстро будет, никакой нагрузки
нет меня видимо опять не понимают, мне нужна точность. И мне нужен таймер по истечению которого выполнится задача, а не проверка на то есть или нет задач. Если каждый раз проверать по 10+ таблиц в бд но то есть или нет не выпОлненые задания а если там сотни заданий... нет это никак не выход из ситуации. У меня есть идея но Как сделать чтоб при нажатии кнопки выполнялся пхп сценарий и после того как сценариз закончился, он отправляет заПрос другому сценарию (как браузер). сорри за корявость текста, я с телефона
Сделай форму с кнопкой. Кнопка запустит скрипт, а в конце скрипта сделай запрос через сокеты(если это не должен видеть пользователь) или header("location: ....");(если нужно чтобы пользователь увидел результат этого запроса).
А если не сложно то можите написать как через сокеты обратится к сценарию который на localhost/time.php (просто обратится к нему, а в нём у меня запрос к бд и таймер) , мне с телефона сложно и дорого искать =/
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($s, 512); fclose($s); echo $answer; ?>
А как возможно передать по GET значение id допустим равное 25 (пробовал /time.php?id=25 но не получилось)
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($s, 512); fclose($s); echo $answer; ?> если непашет значит либо криво написал , либо в time.php id криво определяется
Ребята, как бы лучше реализовать чтобы при попадании пользователя на страничку авто-определялся шаблон... Ну т.е. надо чтобы для пользователей заходящих с компьютеров один шаб, а для пользователей с мобил другой...