|
|
|
| В моем интернет магазине, после оформления заказ очень долго грузиться страница (~10 сек),все из-за sms уведомителя (на указанны моб. номер отправляется sms с номером заказа и суммой к оплате), скоро добавлю автоматическую отправку заказов сразу в ПП, помимо этого еще и на мыло отправляется дубль заказа и промокод.
Чтобы покупатель не ждал, решил запускать php скрипт по крону, но я пдозреваю что если cron запускать каждые 30 сек то серверу будет не очень хорошо) Поэтому хочу запускать крон который будет запускать скрипт, либо сам php скрипт (который будет проверять наличии новых записей в бд и отправлять их в пп и sms) сразу после нажатия "оформить заказ" но чтобы юзер не ждал, т.е. поставить задачу в очередь.
Пока что есть 1 решение, это после оформления заказа сразу ajax отправлялся на сервер после оформления заказа прям со страницы "спасибо за заказ", но как-то мне этот вариант не нравиться.
какие есть продолжения? | |
|
|
|
|
|
|
|
для: ntro123
(22.08.2013 в 10:22)
| | А по-моему ничего страшного в запуске задания раз... Ну может не в 30 секунд, но на раз в минуту я ставил. Но и раз в 30 секунд - какая разница. Тем более, что этот скрипт будет сразу выходить, кроме случаев, когда появился заказ. | |
|
|
|
|
|
|
|
для: Sfinks
(22.08.2013 в 20:37)
| | Возможно вы правы. Но не очень рационально, если бы была та-же задача, но скрипту по долгу бы пришлось обращаться в бд на другом хосте? или еще что-то? Так чисто ради спортивного интереса хочется другое решение увидеть)
Скажем запускать крон будет сам php скрипт, после оформление заказа? Только как это реализовать? | |
|
|
|
|
|
|
|
для: ntro123
(22.08.2013 в 20:53)
| |
> если бы была та-же задача, но скрипту по долгу бы пришлось обращаться в бд на другом хосте?
|
То надо было бы оптимизировать БД, включать кеширование, переписывать движок, искать выходы в других способах хранения информации.
В каждом конкретном случае - решение может быть разное....
Отправка смс у вас, на сколько я понимаю, тормозит из-за тормозов провайдера смс.... Т.е. посредника. И вы никак не можете на это повлиять. Но и заставлять юзера ждать - не допустимо. В этой ситуации крон - вполне нормальное решение. Запуск скрипта по крону раз в минуту - считайте вам +1 посетитель в минуту. Сильно тяжело для сервера? Что вас так смущает, я не пойму?... | |
|
|
|
|
|
|
|
для: Sfinks
(22.08.2013 в 21:03)
| | эх, ладно, буду крон юзать =( | |
|
|
|
|
|
|
|
для: ntro123
(22.08.2013 в 21:18)
| | Не, ну если вам очень хочется, можете сделать это через JS и просто не ждать ответа....
Просто в страницу, которая выдается после сохранения заказа, встройте скрипт отправки с нужными переменными:
<html><head><script>
var num = '<?=$phone_number?>',
txt = '<?=$message?>';
$.ajax('http://страница_отправки',{num:num,txt:txt})
</script>
|
Но это потенциальная уязвимость. | |
|
|
|
|
|
|
|
для: Sfinks
(22.08.2013 в 21:27)
| | уже говорилось об этом в первом посте:
"Пока что есть 1 решение, это после оформления заказа сразу ajax отправлялся на сервер после оформления заказа прям со страницы "спасибо за заказ", но как-то мне этот вариант не нравиться."
Передавать переменные не обязательно, достаточно пнуть скрипт чтобы сам зашел в бд и проверил новый заказ, и отправил его. Так что неуязвимости нету. | |
|
|
|
|
|
|
|
для: ntro123
(22.08.2013 в 22:12)
| | > достаточно пнуть скрипт чтобы сам зашел в бд и проверил новый заказ, и отправил его. Так что неуязвимости нету.
А, ну да... Тогда я не знаю каких вы еще вариантов хотите =) | |
|
|
|
|
|
|
|
для: ntro123
(22.08.2013 в 10:22)
| | Можно попробовать запустить exec('/path/to/bin --args &');
Именно амперсант в конце. | |
|
|
|