Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как отправить письмо через полчаса?
 
 автор: Владимир55   (17.06.2008 в 19:58)   письмо автору
 
 

Скрипт предусматривает отправку письменного уведомления посетителю, однако желательно сделать это не сразу, а через двадцать-тридцать минут с момента ввода информации в скрипт.

Как это осуществить?

   
 
 автор: ddhvvn   (17.06.2008 в 20:32)   письмо автору
 
   для: Владимир55   (17.06.2008 в 19:58)
 

Хм.. н знаю, прокатит ли, но можно попробовать


<?php
  set_time_limit
(0);
  
sleep(1800);

.../
необходимый код
?>

   
 
 автор: Zend72   (17.06.2008 в 20:40)   письмо автору
 
   для: ddhvvn   (17.06.2008 в 20:32)
 

Ну это уж слишком... Может добавить задание в cron пусть каждые пол часа выполняется...

   
 
 автор: BinLaden   (17.06.2008 в 21:32)   письмо автору
 
   для: Владимир55   (17.06.2008 в 19:58)
 

Создайте таблицу для сохранения писем, которые требуется отправить, также добавьте поле с меткой времени. Каждый раз делайте выборку писем в таблице, которые имеют метки времени, отличающуюся от текущей более, чем на полчаса. Найденные письма отправляйте и удаляйте их из таблицы.

Если требуется незавимость от того, посещает ли кто-то скрипт с отправкой писем, то, как уже сказали, используйте для запуска этого скрипта утилиту crontab.

   
 
 автор: Владимир55   (18.06.2008 в 00:50)   письмо автору
 
   для: BinLaden   (17.06.2008 в 21:32)
 

Человек вводит информацию о себе, включая свой адрес. В принципе, я тут же могу отправить ему ответ, ибо ответ формируется непосредственно при исполнении скрипта. Но "для солидности" лучше сделать это несколько позже, минут через двадцать-тридцать.

Как видите, отправка по таймеру здесь не подходит, поскольку скрипт запускается в произвольный момент времени и потому задержка может быть нулевая. И отправка из таблицы по тем же причинам, хотя здесь уже можно гарантировать какую-то задержку, если опрашивать таблицу почаще. А вот вариант sleep(1800) очень прост и вполне бы подошел.

Чем плох вариант sleep?

   
 
 автор: BinLaden   (18.06.2008 в 01:14)   письмо автору
 
   для: Владимир55   (18.06.2008 в 00:50)
 

Например тем, что пользователь тоже будет загружать страничку полчаса и скорее плюнет и исчезнет вся "солидность".

А вообще забавно: мучить пользователя в Вашем понимании "солидно"...

   
 
 автор: Владимир55   (18.06.2008 в 09:04)   письмо автору
 
   для: BinLaden   (18.06.2008 в 01:14)
 

Мучений быть не должно. Но я не хочу, чтобы пользователь сразу покидал сайт и отправлялся по ссылкам, которые получит в письме. Пусть у него будет гарантированные полчаса. И, возможно, за это время он сделает еще заказы. Как показывает моя статистика, человек либо не покупает ничего, либо делает несколько покупок (в среднем 3.2, зафиксированный максимум - 18).

Поэтому мне надо, чтобы скрипт осуществлял все нужные действия, а последним из них пусть будет отправка письма.

Если задержку отправки письма сделать через sleep, то чем это плохо?

   
 
 автор: BinLaden   (18.06.2008 в 10:31)   письмо автору
 
   для: Владимир55   (18.06.2008 в 09:04)
 

> Если задержку отправки письма сделать через sleep, то чем это плохо?

Я же вроде сказал: страница загружаться тоже будет полчаса. Вторая причина - сервер может быстро стать для многих недоступен - превышение количества одновременных соединений и просто из-за большого количества процессов, висящих в памяти.

   
 
 автор: Владимир55   (18.06.2008 в 10:40)   письмо автору
 
   для: BinLaden   (18.06.2008 в 10:31)
 

Понятно: если посетитель страницу закроет, то код не будет выполнен в полном объеме, т.е. письмо не будет отослано вообще.

И относительно количества соединений тоже понятно. Хотя эту проблему, вероятно, кеширование снимет.

Таймер, конечно же, будет гораздо эффективнее.

Спасибо!

   
 
 автор: cheops   (18.06.2008 в 12:02)   письмо автору
 
   для: Владимир55   (18.06.2008 в 10:40)
 

>И относительно количества соединений тоже понятно. Хотя эту проблему, вероятно,
>кеширование снимет.
Кстати, нет. Процесс будет висеть полюбому и сервер вынужден будет создавать новые процессы для обслуживания других клиентов. При интенсивной отправке писем - это действительно может стать проблемой. Например, разрешено 50 одновременных соединений, и отправили письма 45 человек. Все оставшиеся запросы обрабатывают 5 процессов - в результате всё начинает тормозить и захлебываться. Здесь cron действительно более разумное решение.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования