|
|
|
| Скрипт предусматривает отправку письменного уведомления посетителю, однако желательно сделать это не сразу, а через двадцать-тридцать минут с момента ввода информации в скрипт.
Как это осуществить? | |
|
|
|
|
|
|
|
для: Владимир55
(17.06.2008 в 19:58)
| | Хм.. н знаю, прокатит ли, но можно попробовать
<?php
set_time_limit(0);
sleep(1800);
.../необходимый код
?>
|
| |
|
|
|
|
|
|
|
для: ddhvvn
(17.06.2008 в 20:32)
| | Ну это уж слишком... Может добавить задание в cron пусть каждые пол часа выполняется... | |
|
|
|
|
|
|
|
для: Владимир55
(17.06.2008 в 19:58)
| | Создайте таблицу для сохранения писем, которые требуется отправить, также добавьте поле с меткой времени. Каждый раз делайте выборку писем в таблице, которые имеют метки времени, отличающуюся от текущей более, чем на полчаса. Найденные письма отправляйте и удаляйте их из таблицы.
Если требуется незавимость от того, посещает ли кто-то скрипт с отправкой писем, то, как уже сказали, используйте для запуска этого скрипта утилиту crontab. | |
|
|
|
|
|
|
|
для: BinLaden
(17.06.2008 в 21:32)
| | Человек вводит информацию о себе, включая свой адрес. В принципе, я тут же могу отправить ему ответ, ибо ответ формируется непосредственно при исполнении скрипта. Но "для солидности" лучше сделать это несколько позже, минут через двадцать-тридцать.
Как видите, отправка по таймеру здесь не подходит, поскольку скрипт запускается в произвольный момент времени и потому задержка может быть нулевая. И отправка из таблицы по тем же причинам, хотя здесь уже можно гарантировать какую-то задержку, если опрашивать таблицу почаще. А вот вариант sleep(1800) очень прост и вполне бы подошел.
Чем плох вариант sleep? | |
|
|
|
|
|
|
|
для: Владимир55
(18.06.2008 в 00:50)
| | Например тем, что пользователь тоже будет загружать страничку полчаса и скорее плюнет и исчезнет вся "солидность".
А вообще забавно: мучить пользователя в Вашем понимании "солидно"... | |
|
|
|
|
|
|
|
для: BinLaden
(18.06.2008 в 01:14)
| | Мучений быть не должно. Но я не хочу, чтобы пользователь сразу покидал сайт и отправлялся по ссылкам, которые получит в письме. Пусть у него будет гарантированные полчаса. И, возможно, за это время он сделает еще заказы. Как показывает моя статистика, человек либо не покупает ничего, либо делает несколько покупок (в среднем 3.2, зафиксированный максимум - 18).
Поэтому мне надо, чтобы скрипт осуществлял все нужные действия, а последним из них пусть будет отправка письма.
Если задержку отправки письма сделать через sleep, то чем это плохо? | |
|
|
|
|
|
|
|
для: Владимир55
(18.06.2008 в 09:04)
| | > Если задержку отправки письма сделать через sleep, то чем это плохо?
Я же вроде сказал: страница загружаться тоже будет полчаса. Вторая причина - сервер может быстро стать для многих недоступен - превышение количества одновременных соединений и просто из-за большого количества процессов, висящих в памяти. | |
|
|
|
|
|
|
|
для: BinLaden
(18.06.2008 в 10:31)
| | Понятно: если посетитель страницу закроет, то код не будет выполнен в полном объеме, т.е. письмо не будет отослано вообще.
И относительно количества соединений тоже понятно. Хотя эту проблему, вероятно, кеширование снимет.
Таймер, конечно же, будет гораздо эффективнее.
Спасибо! | |
|
|
|
|
|
|
|
для: Владимир55
(18.06.2008 в 10:40)
| | >И относительно количества соединений тоже понятно. Хотя эту проблему, вероятно,
>кеширование снимет.
Кстати, нет. Процесс будет висеть полюбому и сервер вынужден будет создавать новые процессы для обслуживания других клиентов. При интенсивной отправке писем - это действительно может стать проблемой. Например, разрешено 50 одновременных соединений, и отправили письма 45 человек. Все оставшиеся запросы обрабатывают 5 процессов - в результате всё начинает тормозить и захлебываться. Здесь cron действительно более разумное решение. | |
|
|
|