В общем, такая ситуация - нужно из интерфейса запустить скрипт (например через exec() или system()), который будет производить расчеты а в это время часть интерфейса будет недоступна, но состояние работы скрипта должно как-то выводится полльзователю. Я такого раньше не реализовывал, поэтому идея такая:
1)Запускаем скрипт через system (только как потом перенаправить пользователя на главную страницу, ведь этот вызов, вроде как, блокирующий)
2)Сделать запись в бд, что идет работа и часть интерфейса показываться не будет (смотрим в бд, если есть запись о том что работа идет, то не показываем некоторые меню)
3)Но как от скрипта получать результаты в реальном времени? Например, чтобы аяксом каждые 30 секунд производились запросы к скрипту и он возвращал какие-то данные (но так не получится, потому что скрипт работать будет, значит нужен какой-то промежуточный?)
1. freelsd - 23 Января, 2016 - 16:22:01 - перейти к сообщению
2. OrmaJever - 23 Января, 2016 - 17:41:44 - перейти к сообщению
freelsd пишет:
3)Но как от скрипта получать результаты в реальном времени? Например, чтобы аяксом каждые 30 секунд производились запросы к скрипту и он возвращал какие-то данные (но так не получится, потому что скрипт работать будет, значит нужен какой-то промежуточный?)
а это всё зависит от приложения которое вы собрались запускать. Оно например может например записывать в файл ход действий, или выводить что-то в консоль. Если же оно это не делает, а просто молча что-то выполняет то никак вы это не сделаете. Максимум что вы можете получить в таком случае дак это только статус работает/не работает.
3. freelsd - 23 Января, 2016 - 17:45:37 - перейти к сообщению
OrmaJever пишет:
а это всё зависит от приложения которое вы собрались запускать. Оно например может например записывать в файл ход действий, или выводить что-то в консоль. Если же оно это не делает, а просто молча что-то выполняет то никак вы это не сделаете. Максимум что вы можете получить в таком случае дак это только статус работает/не работает.
freelsd пишет:
3)Но как от скрипта получать результаты в реальном времени? Например, чтобы аяксом каждые 30 секунд производились запросы к скрипту и он возвращал какие-то данные (но так не получится, потому что скрипт работать будет, значит нужен какой-то промежуточный?)
а это всё зависит от приложения которое вы собрались запускать. Оно например может например записывать в файл ход действий, или выводить что-то в консоль. Если же оно это не делает, а просто молча что-то выполняет то никак вы это не сделаете. Максимум что вы можете получить в таком случае дак это только статус работает/не работает.
Ну чтобы, например аякс статус получал, скрипт должен возвращать данные в базу или файл, по-другому видимо никак. И тут нужен какой-то промежуточный скрипт. Типа
рабочий скрипт ->скрипт вывода<-интерфейс с аяксом. Но вот еще вопрос - как запустить скрипт работать а дальше сценарий страницы выполнять (что-то типа никсового &) только чтобы не зависело от платформы. Короче, чтобы вызов неблокирующим был.
Я подробнее опишу, чтобы понятно было. Смотрите, я загружаю файл и процешу файл, но мне нужно чтобы вывод был не после того как скрипт отработает, а в прямом эфире. Только как такое сделать я хз.
4. Viper - 23 Января, 2016 - 18:32:59 - перейти к сообщению
freelsd пишет:
большинство толковых загрузчиков "умеет" калбеки и статусы. Если у вас велосипед, то реализовываем сами. За пример можно покопаться в http://www[dot]plupload[dot]com/examples/events
Смотрите, я загружаю файл и процешу файл, но мне нужно чтобы вывод был не после того как скрипт отработает, а в прямом эфире.
5. freelsd - 23 Января, 2016 - 18:43:02 - перейти к сообщению
Viper пишет:
freelsd пишет:
большинство толковых загрузчиков "умеет" калбеки и статусы. Если у вас велосипед, то реализовываем сами. За пример можно покопаться в http://www.plupload.com/examples/eventsСмотрите, я загружаю файл и процешу файл, но мне нужно чтобы вывод был не после того как скрипт отработает, а в прямом эфире.
Вопрос более общий - как запустить код на php "в фоне". То есть чтобы пользователь, если даже закроет браузер, не помешал выполнению задачи, и скрипт проработает, пока не завершится.
Так работает, но в файл не перенаправляется. И не ясно как определить успещность запуска скрипта.