Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Функция sleep()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
StasHappy
Отправлено: 05 Марта, 2014 - 13:20:50
Post Id


Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Здравствуйте.

Могу ли я использовать в sleep() высокие значения? Допустим 900 секунд(15 минут). Чревато ли это какими-нибудь последствиями? Скажем, если я запущу, даже не один скрипт, а множество, каждый из которых будет висеть в памяти сервера по 15 минут.
 
 Top
Ch_chov
Отправлено: 05 Марта, 2014 - 13:23:29
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




А зачем это? Может быть лучше cron использовать?
 
 Top
PHPLamer
Отправлено: 05 Марта, 2014 - 13:24:58
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




StasHappy пишет:
Здравствуйте.

Могу ли я использовать в sleep() высокие значения? Допустим 900 секунд(15 минут). Чревато ли это какими-нибудь последствиями? Скажем, если я запущу, даже не один скрипт, а множество, каждый из которых будет висеть в памяти сервера по 15 минут.


Это чревато тем, что вы исчерпаете оперативную память и сервер перестанет отвечать на запросы.
Делать так ни в коем случае нельзя, используйте планировщик.
 
 Top
StasHappy
Отправлено: 05 Марта, 2014 - 13:27:57
Post Id


Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Цитата:
Это чревато тем, что вы исчерпаете оперативную память и сервер перестанет отвечать на запросы. Делать так ни в коем случае нельзя, используйте планировщик.

Вот вот. За это я и опасаюсь. Эх. Неужели придётся использовать cron. Я в нём ничерта не смыслю. Да и статей нормальных в интернете не сыскать.Недовольство, огорчение
(Добавление)
А что если нам во время выполнения скрипта, отключить на время кеширование или перед использованием sleep() очистить буфер? Такое возможно?
 
 Top
PHPLamer
Отправлено: 05 Марта, 2014 - 13:40:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




StasHappy пишет:
Цитата:
Это чревато тем, что вы исчерпаете оперативную память и сервер перестанет отвечать на запросы. Делать так ни в коем случае нельзя, используйте планировщик.

Вот вот. За это я и опасаюсь. Эх. Неужели придётся использовать cron. Я в нём ничерта не смыслю. Да и статей нормальных в интернете не сыскать.Недовольство, огорчение


Попробуйте это http://ru[dot]wikipedia[dot]org/wiki/Cron

Если будет не понятно, попробуйте спросить.

PS: Перед добавлением задания в cron убедитесь, что ваш скрипт корректно выполняется из консоли и выполняет необходимый функционал.
 
 Top
StasHappy
Отправлено: 05 Марта, 2014 - 13:43:21
Post Id


Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Цитата:
Попробуйте это http://ru[dot]wikipedia[dot]org/wiki/Cron

Я вчера читал эту статью. Перечитывал несколько раз. Через панель хостинга, задавать задачи это не вопрос. Но я не понимаю, как из php-скрипта можно отправить сигнал в cron, на запуск(или удаление) той или иной задачи. Для меня этот вопрос остается загадкой.

(Отредактировано автором: 05 Марта, 2014 - 13:45:44)

 
 Top
PHPLamer
Отправлено: 05 Марта, 2014 - 13:47:41
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




StasHappy пишет:
Цитата:
Попробуйте это http://ru[dot]wikipedia[dot]org/wiki/Cron

Я вчера читал эту статью. Перечитывал несколько раз. Через панель хостинга, задавать задачи это не вопрос. Но я не понимаю, как из php-скрипта можно отправить сигнал в cron, на запуск той или иной задачи. Для меня этот вопрос остается загадкой.


Зачем отправлять какой-то сигнал в cron?
cron - это планировщик, он выполняет задачи в заданные интервалы времени. Ему не нужно для этого ни каких сигналов, это демон(служба), он запущен постоянно.
Добавляете временной интервал и программу которую необходимо запускать.
 
 Top
StasHappy
Отправлено: 05 Марта, 2014 - 13:52:21
Post Id


Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Цитата:
Добавляете временной интервал и программу которую необходимо запускать.

Спасибо. Но задача немножко другая. Интересует не многократное, а однократное выполнение скрипта. Но отложенное. Причём, без моего участия. Я делаю уведомления пользователей на e-mail о новых события в их личном кабинете на сайте. Скажем если Петя добавляется к Васе в друзья, то надо уведомить об этом его по почте. Но вся загвоздка в том, что Петя может отменить свою заявку к Васе. А уведомление мы уже отправили. Поэтому, я думаю над тем, как отправить уведомление немного позже.
(Добавление)
Есть такой вариант, но с использованием БД и sleep():

PHP:
скопировать код в буфер обмена
  1. // получаем post переменные
  2. // заносим в БД `table_friends`данные о новой заявке
  3. // заносим в БД `table_tasks`новое событие о добавлении в друзья
  4. sleep(900); // останавливаем выполнение скрипта на 15 минут
  5. // проверяем, имеется ли толька что созданное событие в таблице `table_tasks`
  6. // если имеется, то отправляем Васе уведомление на e-mail


Если Петя отменил заявку к Васе в течение 15 минут, то удаляем запись созданную в таблице `table_tasks`.

(Отредактировано автором: 05 Марта, 2014 - 14:02:36)

 
 Top
PHPLamer
Отправлено: 05 Марта, 2014 - 13:56:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




StasHappy пишет:
Цитата:
Добавляете временной интервал и программу которую необходимо запускать.

Спасибо. Но задача немножко другая. Интересует не многократное, а однократное выполнение скрипта. Но отложенное. Причём, без моего участия. Я делаю уведомления пользователей на e-mail о новых события в их личном кабинете на сайте. Скажем если Петя добавляется к Васе в друзья, то надо уведомить об этом его по почте. Но вся загвоздка в том, что Петя может отменить свою заявку к Васе. А уведомление мы уже отправили. Поэтому, я думаю над тем, как отправить уведомление немного позже.


Когда запустится ваш скрипт по расписанию планировщика, вы можете в нём условием проверять временной интервал.
Пример: Скрипт выполняется каждые 5 минут. При запуске скрипт проверяет кто к кому добавился в друзья и как давно, если с момента когда он добавился(наверняка у вас в базе есть такая запись) до текущего момента прошло 2 часа, то отправляем уведомление, и помечаем в базе, что уведомление об этой связи отправлено. Если 2 часа не прошло, то ничего не делаем.
(Добавление)
Максимальная погрешность которая возможна при таком варианте, это 4:59. То есть если момент добавления в друзья относительно момента запуска скрипта при определении кратности будет расходится в 4:59. То есть уведомление может получить не через 2 часа, а через 2 часа 04 минуты 59 секунд.

(Отредактировано автором: 05 Марта, 2014 - 14:02:43)

 
 Top
StasHappy
Отправлено: 05 Марта, 2014 - 14:08:30
Post Id


Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




PHPLamer. Если планировщик запустит скрипт, то дальнейший алгоритм, я примерно уже в голове просчитал. Возможет ли такой вариант? В момент добавления в друзья, мы не только создаем в БД новую запись, но и из php обработчика, отправляем в cron, комманду на создание новой задачи. А планировщик в свою очередь, через 15 минут, запускает необходимый php скрипт на сервере который после необходимых проверок, отправляет e-mail сообдение. И затем, cron задача удаляется по обратной связи. Если взаимодействие php и cron невозможно, то его использование в моем случае бессмысленно.

(Отредактировано автором: 05 Марта, 2014 - 14:10:34)

 
 Top
PHPLamer
Отправлено: 05 Марта, 2014 - 14:10:28
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




StasHappy пишет:
PHPLamer. Если планировщик запустит скрипт, то дальнейший алгоритм, я примерно уже в голове просчитал. Возможет ли такой вариант? В момент добавления в друзья, мы не только создаем в БД новую запись, но и из php обработчика, отправляем в cron, комманду на создание новой задачи. А планировщик в свою очередь, через 15 минут, запускает php скрипт и отправляем e-mail сообдение. И затем, cron задача удаляется по обратной связи. Если взаимодействие php и cron невозможно, то его использование в моем случае бессмысленно.


Добавление возможно, но это скорее будет костыль, что не есть "правильная" реализация.

Почему вы не хотите запускать скрипт, например, каждый 5 минут?

(Отредактировано автором: 05 Марта, 2014 - 14:13:25)

 
 Top
StasHappy
Отправлено: 05 Марта, 2014 - 14:17:06
Post Id


Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Цитата:
Почему вы не хотите запускать скрипт, например, каждый 5 минут?


Хм.. С другой стороны, мысль конечно хорошая.. То есть, запускаем скрипт, каждые 5 минут с помощью планировщика. И потом, просто проверяем, что у нас имеется в базе данных. Если например, находим запись где Петя добавляется к Васе в друзья, то отправляем Васе уведомление на почту. Единственный недостаток при таком подходе, в количестве тех записей, которые могут лежать в базе данных. Если их будет много, то это опработка большого количества информации и отправка большого количества e-mail сообщений с уведомлениями.

(Отредактировано автором: 05 Марта, 2014 - 14:17:31)

 
 Top
PHPLamer
Отправлено: 05 Марта, 2014 - 14:20:01
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




StasHappy пишет:
Цитата:
Почему вы не хотите запускать скрипт, например, каждый 5 минут?


Хм.. С другой стороны, мысль конечно хорошая.. То есть, запускаем скрипт, каждые 5 минут с помощью планировщика. И потом, просто проверяем, что у нас имеется в базе данных. Если например, находим запись где Петя добавляется к Васе в друзья, то отправляем Васе уведомление на почту. Единственный недостаток при таком подходе, в количестве тех записей, которые могут лежать в базе данных. Если их будет много, то это опработка большого количества информации и отправка большого количества e-mail сообщений с уведомлениями.


Уведомления вам в любом случае рассылать.

А чтобы не перебирать большое число записей в таблице, запись для уведомления можно добавлять в отдельную таблицу и удалять эту запись после уведомления.
 
 Top
StasHappy
Отправлено: 05 Марта, 2014 - 14:21:42
Post Id


Новичок


Покинул форум
Сообщений всего: 56
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Цитата:
А чтобы не перебирать большое число записей в таблице, запись для уведомления можно добавлять в отдельную таблицу и удалять эту запись после уведомления.

Чтож. Значит, буду использовать cron. Благодарю вас друг мой за помощь.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB