Сервис Интернет Объявлений

 

Archive for Январь, 2013

29
Январь
2013

Параллельные (фоновые) процессы в PHP




Фоновое, параллельное, многопоточное и т.д. выполнение процессов в PHP нужно в том случае, когда процесс достаточно длительный, а пользователь торопливый, и ждать выполнение процесса не собирается.

Второе применение — системные ответы платежным системам об успешности операции. В данном случае при длительной обработке запроса (записи в БД, отправка письма, СМС…), удаленный сервер может и не дождаться своевременного ответа (в виде сгенерированной страницы) и свалиться в таймаут.

Порывшись в интернетах и перебрав массу вариантов, я пришел к следующему решению.

Берем функцию:

function launchBackgroundProcess($call,$file=false,$errors=false)
{
      if (PHP_OS == 'WINNT' || PHP_OS == 'WIN32')
      {
      $handle=popen('start /MIN '.$call, "r");
      if($handle===false)
      trigger_error("Can't start process $call",E_USER_ERROR);
      else pclose($handle);
      }
      else{
      $add = "";
      if($file===false){
      $file = '/dev/null';
      }
      if($errors!==false){
      $add = " 2> ".$errors;
      }
      exec($cmd = ($call.' > '.$file.$add.' &'));
      }
}

И обращаемся к ней:

launchBackgroundProcess('wget http://yoursite.com/yourfile.php');

В файле http://yoursite.com/yourfile.php находятся все хроноемкие процессы, которые нужно выполнить в фоне, но результат которых уже не будет возвращен в сформированную страницу.
Причем, можно передавать GET-параметры:

launchBackgroundProcess('wget http://yoursite.com/yourfile.php?param1=val1');

Учтите, что функция exec() очень часто пребывает в отключенном состоянии из-за режима безопасности на вашем хостинге. Если не работает — пишите в саппорт.

24
Январь
2013

Интернет-объявления: эхо из прошлого?

Вы уже заметили мое пристрастие к доскам объявлений в Интернете.  Мне также любопытны всякие новинки этой отрасли. Особенно ,когда их проталкивают через оффлайновые каналы рекламы.

В последнее время по радио активно рекламируют сайт бесплатных объявлений с незатейливым названием «Бесплатка».

Открываем,  и что мы видим?

Сайт претендует быть всеукраинским, но сделано пока три региона.

При первом входе я обнаружил, что текст ограничивается то ли 200, то ли 250 символами. Это сущие копейки. Годится для краткого содержания или координат.

Не смотря на суточный траффик в несколько тысяч хостов, обновления доски крайне редки. Может, счетчик левый, а?

Регистрация привязывается к телефону и е-мейлу юзера.  Это логично, и правильно с точки зрения уменьшения спама.

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

Ну не смогли товарищи, которые вбухали состояние в радио-рекламу, довести до ума систему восстановления пароля!

Ладно. Пишу начальству.. Или не пишу? На сайте нет координат обратной связи с администрацией!!!!  И это в век развития е-мейла, твиттера, чатов, телефонов и соцсетей!!!

Вспоминаются полуночные общения с колл-центром РИА, подробные ответы от Сландо и Торга..  А тут на тебе. Получаем изолированный , полусырой, ограниченный сайт объявлений с огромным паблисити.

Вот они особенности нашего бизнеса. Как говорил великий О’Гилви: «Покупатель не идиот: это твоя жена».

А мораль?  Мораль продавать то, чем бы с удовольствием пользовался сам. Например, сайтом http://zapchasti-na-mitsubishi.ru/ по продаже оригинальных и неоригинальных запчастей на Mitsubishi.

 

 

 

 

09
Январь
2013

PHP, SMTP и BCC. Отправка почты Гугла через PHP.

Итак, столкнулся с проблемой быстрой отправки электронной почты средствами PHP.
Встроенная функция mail() работает и вроде-бы не теряет письма. Но задержки с отправкой оставляют желать лучшего, т.к. среднее время доставки составляет около 2 минут.
Согласитесь, за две минуты пользователь может подумать, что сайт не работает и просто уйти. А когда все-таки получит уведомление (и если оно не попадет в СПАМ), то вряд ли вернется и продолжит работу.

В таких случаях нужно пользоваться отдельным SMTP сервером для быстрой и качественной отправки. Можно даже воспользоваться платными сервисами СМС-рассылок, но здесь я буду рассматривать именно бесплатный вариант. А конкретнее — почту от Google.

Эксперименты по отправке почты с SMTP я ставил на Google Apps, предварительно повесив на него один из своих доменов. Бесплатная версия позволяет зарегистрировать до 10 корпоративных почтовых ящиков вида myname@mydomain.com. Почту можно отправлять с каждого из этих ящиков, отправителем будет именно тот ящик, с которого отправили. Кое-кто считает это недостатком отдельного SMTP-сервера. Но мне и не нужно указывать произвольного отправителя. Поэтому регистрируем «красивый» е-мейл и продолжаем кодить.

Для отправки писем через PHP и гугловский SMTP я использовал компонент PEAR.
По этой теме уже многое исписано, дублировать здесь я не намерен.

От себя добавлю ту инфу, которую не так просто нарыть: правильную отправку скрытого письма BCC (blind carbon copy).

Кое-кто советует в массиве $headers прописать элемент BCC. Но мои эксперименты показали, что это не работает.

Выход: нужно создать массив получателей.

Например, так:

$recipients[«To»] = $to;

$recipients[«Bcc»] = $bcc;

А отправку производить следующим образом:   $mail = $smtp->send($recipients, $headers, $message);

Только в такой комбинации я отправил письмо получателю и сохранил резервную копию на теневом ящике.

Вот и все, о чем я хотел сказать в рамках этого Очерка.

А на заметку владельцам легендарных Крайслеров рекомендую полезную ссылку http://www.g-parts.ru/chrysler/ , посвященную ремонту, обслуживанию и диагностике этих американских каров.

 

 

 

04
Январь
2013

Полезное: регулярки

Буквально вчера столкнулся с необходимостью сформировать внешний PHP-массив из Экзелевского столбца чисел. Чисел было достаточно много.
Кто не вкурсе — объясняю. PHP-массив должен быть записан в формате
«число1″,
«число2″,

«число n»

В исходном варианте у меня не было кавычек и запятых.

Что делать? Ведь чисел много. Проставлять ручками все это = себя не уважать.

Выход: регулярные выражения.

Открываем Notepad ++ и вставляем туда исходный столбец.

Далее заходим Search — Replace и ставим селектор на Regular expression.
Сперва проставим кавычки.
В поле Find what пишем выражение (.+) , а в Replace with — «\1″ .
Давим Replace all. Вуаля: каждая строка обрела свои кавычки.

Далее простановка запятых.
В поле Find what пишем \n или \r , а в Replace with — ,.
Если все сделано правильно, то после каждого значения, после закрывающейся кавычки появится запятая.

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

Но если Вам этого покажется маловато, тогда рекомендую выполнить тюнинг Тойота прадо 150 у настоящих профессионалов. Тогда уж точно настроение выше крышы!