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

Форум PHP

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

 

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

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

тема: Запуск крона через php
 
 автор: ntro123   (22.08.2013 в 10:22)   письмо автору
 
 

В моем интернет магазине, после оформления заказ очень долго грузиться страница (~10 сек),все из-за sms уведомителя (на указанны моб. номер отправляется sms с номером заказа и суммой к оплате), скоро добавлю автоматическую отправку заказов сразу в ПП, помимо этого еще и на мыло отправляется дубль заказа и промокод.

Чтобы покупатель не ждал, решил запускать php скрипт по крону, но я пдозреваю что если cron запускать каждые 30 сек то серверу будет не очень хорошо) Поэтому хочу запускать крон который будет запускать скрипт, либо сам php скрипт (который будет проверять наличии новых записей в бд и отправлять их в пп и sms) сразу после нажатия "оформить заказ" но чтобы юзер не ждал, т.е. поставить задачу в очередь.

Пока что есть 1 решение, это после оформления заказа сразу ajax отправлялся на сервер после оформления заказа прям со страницы "спасибо за заказ", но как-то мне этот вариант не нравиться.

какие есть продолжения?

  Ответить  
 
 автор: Sfinks   (22.08.2013 в 20:37)   письмо автору
 
   для: ntro123   (22.08.2013 в 10:22)
 

А по-моему ничего страшного в запуске задания раз... Ну может не в 30 секунд, но на раз в минуту я ставил. Но и раз в 30 секунд - какая разница. Тем более, что этот скрипт будет сразу выходить, кроме случаев, когда появился заказ.

  Ответить  
 
 автор: ntro123   (22.08.2013 в 20:53)   письмо автору
 
   для: Sfinks   (22.08.2013 в 20:37)
 

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

Скажем запускать крон будет сам php скрипт, после оформление заказа? Только как это реализовать?

  Ответить  
 
 автор: Sfinks   (22.08.2013 в 21:03)   письмо автору
 
   для: ntro123   (22.08.2013 в 20:53)
 

> если бы была та-же задача, но скрипту по долгу бы пришлось обращаться в бд на другом хосте?

То надо было бы оптимизировать БД, включать кеширование, переписывать движок, искать выходы в других способах хранения информации.

В каждом конкретном случае - решение может быть разное....

Отправка смс у вас, на сколько я понимаю, тормозит из-за тормозов провайдера смс.... Т.е. посредника. И вы никак не можете на это повлиять. Но и заставлять юзера ждать - не допустимо. В этой ситуации крон - вполне нормальное решение. Запуск скрипта по крону раз в минуту - считайте вам +1 посетитель в минуту. Сильно тяжело для сервера? Что вас так смущает, я не пойму?...

  Ответить  
 
 автор: ntro123   (22.08.2013 в 21:18)   письмо автору
 
   для: Sfinks   (22.08.2013 в 21:03)
 

эх, ладно, буду крон юзать =(

  Ответить  
 
 автор: Sfinks   (22.08.2013 в 21:27)   письмо автору
 
   для: ntro123   (22.08.2013 в 21:18)
 

Не, ну если вам очень хочется, можете сделать это через JS и просто не ждать ответа....
Просто в страницу, которая выдается после сохранения заказа, встройте скрипт отправки с нужными переменными:
<html><head><script>
  var num = '<?=$phone_number?>',
      txt = '<?=$message?>';
  $.ajax('http://страница_отправки',{num:num,txt:txt})
</script>

Но это потенциальная уязвимость.

  Ответить  
 
 автор: ntro123   (22.08.2013 в 22:12)   письмо автору
 
   для: Sfinks   (22.08.2013 в 21:27)
 

уже говорилось об этом в первом посте:
"Пока что есть 1 решение, это после оформления заказа сразу ajax отправлялся на сервер после оформления заказа прям со страницы "спасибо за заказ", но как-то мне этот вариант не нравиться."

Передавать переменные не обязательно, достаточно пнуть скрипт чтобы сам зашел в бд и проверил новый заказ, и отправил его. Так что неуязвимости нету.

  Ответить  
 
 автор: Sfinks   (23.08.2013 в 09:19)   письмо автору
 
   для: ntro123   (22.08.2013 в 22:12)
 

> достаточно пнуть скрипт чтобы сам зашел в бд и проверил новый заказ, и отправил его. Так что неуязвимости нету.

А, ну да... Тогда я не знаю каких вы еще вариантов хотите =)

  Ответить  
 
 автор: alexander95   (02.09.2013 в 07:07)   письмо автору
 
   для: ntro123   (22.08.2013 в 10:22)
 

Можно попробовать запустить exec('/path/to/bin --args &');
Именно амперсант в конце.

  Ответить  
Rambler's Top100
вверх

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