Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
Здравствуйте.
Могу ли я использовать в sleep() высокие значения? Допустим 900 секунд(15 минут). Чревато ли это какими-нибудь последствиями? Скажем, если я запущу, даже не один скрипт, а множество, каждый из которых будет висеть в памяти сервера по 15 минут.
Ch_chov
Отправлено: 05 Марта, 2014 - 13:23:29
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
А зачем это? Может быть лучше cron использовать?
PHPLamer
Отправлено: 05 Марта, 2014 - 13:24:58
Частый гость
Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008 Откуда: Russia, Krasnodar
Помог: 2 раз(а)
StasHappy пишет:
Здравствуйте.
Могу ли я использовать в sleep() высокие значения? Допустим 900 секунд(15 минут). Чревато ли это какими-нибудь последствиями? Скажем, если я запущу, даже не один скрипт, а множество, каждый из которых будет висеть в памяти сервера по 15 минут.
Это чревато тем, что вы исчерпаете оперативную память и сервер перестанет отвечать на запросы.
Делать так ни в коем случае нельзя, используйте планировщик.
StasHappy
Отправлено: 05 Марта, 2014 - 13:27:57
Новичок
Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
Цитата:
Это чревато тем, что вы исчерпаете оперативную память и сервер перестанет отвечать на запросы. Делать так ни в коем случае нельзя, используйте планировщик.
Вот вот. За это я и опасаюсь. Эх. Неужели придётся использовать cron. Я в нём ничерта не смыслю. Да и статей нормальных в интернете не сыскать. (Добавление)
А что если нам во время выполнения скрипта, отключить на время кеширование или перед использованием sleep() очистить буфер? Такое возможно?
PHPLamer
Отправлено: 05 Марта, 2014 - 13:40:40
Частый гость
Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008 Откуда: Russia, Krasnodar
Помог: 2 раз(а)
StasHappy пишет:
Цитата:
Это чревато тем, что вы исчерпаете оперативную память и сервер перестанет отвечать на запросы. Делать так ни в коем случае нельзя, используйте планировщик.
Вот вот. За это я и опасаюсь. Эх. Неужели придётся использовать cron. Я в нём ничерта не смыслю. Да и статей нормальных в интернете не сыскать.
PS: Перед добавлением задания в cron убедитесь, что ваш скрипт корректно выполняется из консоли и выполняет необходимый функционал.
StasHappy
Отправлено: 05 Марта, 2014 - 13:43:21
Новичок
Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
Цитата:
Попробуйте это http://ru[dot]wikipedia[dot]org/wiki/Cron
Я вчера читал эту статью. Перечитывал несколько раз. Через панель хостинга, задавать задачи это не вопрос. Но я не понимаю, как из php-скрипта можно отправить сигнал в cron, на запуск(или удаление) той или иной задачи. Для меня этот вопрос остается загадкой.
Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008 Откуда: Russia, Krasnodar
Помог: 2 раз(а)
StasHappy пишет:
Цитата:
Попробуйте это http://ru[dot]wikipedia[dot]org/wiki/Cron
Я вчера читал эту статью. Перечитывал несколько раз. Через панель хостинга, задавать задачи это не вопрос. Но я не понимаю, как из php-скрипта можно отправить сигнал в cron, на запуск той или иной задачи. Для меня этот вопрос остается загадкой.
Зачем отправлять какой-то сигнал в cron? cron - это планировщик, он выполняет задачи в заданные интервалы времени. Ему не нужно для этого ни каких сигналов, это демон(служба), он запущен постоянно.
Добавляете временной интервал и программу которую необходимо запускать.
StasHappy
Отправлено: 05 Марта, 2014 - 13:52:21
Новичок
Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
Цитата:
Добавляете временной интервал и программу которую необходимо запускать.
Спасибо. Но задача немножко другая. Интересует не многократное, а однократное выполнение скрипта. Но отложенное. Причём, без моего участия. Я делаю уведомления пользователей на e-mail о новых события в их личном кабинете на сайте. Скажем если Петя добавляется к Васе в друзья, то надо уведомить об этом его по почте. Но вся загвоздка в том, что Петя может отменить свою заявку к Васе. А уведомление мы уже отправили. Поэтому, я думаю над тем, как отправить уведомление немного позже. (Добавление)
Есть такой вариант, но с использованием БД и sleep():
Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008 Откуда: Russia, Krasnodar
Помог: 2 раз(а)
StasHappy пишет:
Цитата:
Добавляете временной интервал и программу которую необходимо запускать.
Спасибо. Но задача немножко другая. Интересует не многократное, а однократное выполнение скрипта. Но отложенное. Причём, без моего участия. Я делаю уведомления пользователей на e-mail о новых события в их личном кабинете на сайте. Скажем если Петя добавляется к Васе в друзья, то надо уведомить об этом его по почте. Но вся загвоздка в том, что Петя может отменить свою заявку к Васе. А уведомление мы уже отправили. Поэтому, я думаю над тем, как отправить уведомление немного позже.
Когда запустится ваш скрипт по расписанию планировщика, вы можете в нём условием проверять временной интервал.
Пример: Скрипт выполняется каждые 5 минут. При запуске скрипт проверяет кто к кому добавился в друзья и как давно, если с момента когда он добавился(наверняка у вас в базе есть такая запись) до текущего момента прошло 2 часа, то отправляем уведомление, и помечаем в базе, что уведомление об этой связи отправлено. Если 2 часа не прошло, то ничего не делаем. (Добавление)
Максимальная погрешность которая возможна при таком варианте, это 4:59. То есть если момент добавления в друзья относительно момента запуска скрипта при определении кратности будет расходится в 4:59. То есть уведомление может получить не через 2 часа, а через 2 часа 04 минуты 59 секунд.
Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
PHPLamer. Если планировщик запустит скрипт, то дальнейший алгоритм, я примерно уже в голове просчитал. Возможет ли такой вариант? В момент добавления в друзья, мы не только создаем в БД новую запись, но и из php обработчика, отправляем в cron, комманду на создание новой задачи. А планировщик в свою очередь, через 15 минут, запускает необходимый php скрипт на сервере который после необходимых проверок, отправляет e-mail сообдение. И затем, cron задача удаляется по обратной связи. Если взаимодействие php и cron невозможно, то его использование в моем случае бессмысленно.
Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008 Откуда: Russia, Krasnodar
Помог: 2 раз(а)
StasHappy пишет:
PHPLamer. Если планировщик запустит скрипт, то дальнейший алгоритм, я примерно уже в голове просчитал. Возможет ли такой вариант? В момент добавления в друзья, мы не только создаем в БД новую запись, но и из php обработчика, отправляем в cron, комманду на создание новой задачи. А планировщик в свою очередь, через 15 минут, запускает php скрипт и отправляем e-mail сообдение. И затем, cron задача удаляется по обратной связи. Если взаимодействие php и cron невозможно, то его использование в моем случае бессмысленно.
Добавление возможно, но это скорее будет костыль, что не есть "правильная" реализация.
Почему вы не хотите запускать скрипт, например, каждый 5 минут?
Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
Цитата:
Почему вы не хотите запускать скрипт, например, каждый 5 минут?
Хм.. С другой стороны, мысль конечно хорошая.. То есть, запускаем скрипт, каждые 5 минут с помощью планировщика. И потом, просто проверяем, что у нас имеется в базе данных. Если например, находим запись где Петя добавляется к Васе в друзья, то отправляем Васе уведомление на почту. Единственный недостаток при таком подходе, в количестве тех записей, которые могут лежать в базе данных. Если их будет много, то это опработка большого количества информации и отправка большого количества e-mail сообщений с уведомлениями.
Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008 Откуда: Russia, Krasnodar
Помог: 2 раз(а)
StasHappy пишет:
Цитата:
Почему вы не хотите запускать скрипт, например, каждый 5 минут?
Хм.. С другой стороны, мысль конечно хорошая.. То есть, запускаем скрипт, каждые 5 минут с помощью планировщика. И потом, просто проверяем, что у нас имеется в базе данных. Если например, находим запись где Петя добавляется к Васе в друзья, то отправляем Васе уведомление на почту. Единственный недостаток при таком подходе, в количестве тех записей, которые могут лежать в базе данных. Если их будет много, то это опработка большого количества информации и отправка большого количества e-mail сообщений с уведомлениями.
Уведомления вам в любом случае рассылать.
А чтобы не перебирать большое число записей в таблице, запись для уведомления можно добавлять в отдельную таблицу и удалять эту запись после уведомления.
StasHappy
Отправлено: 05 Марта, 2014 - 14:21:42
Новичок
Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013
Помог: 0 раз(а)
Цитата:
А чтобы не перебирать большое число записей в таблице, запись для уведомления можно добавлять в отдельную таблицу и удалять эту запись после уведомления.
Чтож. Значит, буду использовать cron. Благодарю вас друг мой за помощь.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.