Отправка сообщений на Jabber из PHP

Сегодня я расскажу о немного необычном способе применения Jabber - службы мгновенных сообщений - для получения извещений о работе сайта и возможных неполадках в режиме реального времени. Все что для этого потребуется - получить один jabber-аккаунт на одном из серверов и добавить в код вашего сайта несколько дополнительных строчек на PHP. Это даст возможность узнать о возникновении различных ситуаций, которые требуют вмешательства веб-мастера или человека, который занимается поддержкой веб-сайта, в течении нескольких секунд. Возможный покупатель задал вопрос через форму обратной связи и ждет ответа? Или уже разместил заказ и ждет пока он будет обработан? Или наоборот, “легла” база данных и посетители не могут попасть на сайт? Добавьте несколько строк к коду ваших страниц и вы сможете узнать об этих событиях в течении нескольких секунд после того как это что-то случилось, а не минут или даже часов, как это порой бывает с извещениями по электронной почте.

Начну с такого вопроса. Кто-то может спросить почему для отправки сообщений выбран жаббер, а не популярная аська? Ответ тут очень простой. С недавних времен icq окончательно подорвала свое доверие тем что начала борьбу с “незаконными” программными клиентами, которыми она считает все разработанные программы, кроме ее собственного детища. Кто даст гарантию что завтра-послезавтра скрипт работающий через icq не окажется заблокирован из-за очередного внезапного изменения в протоколе icq?

В то же время Jabber уже зарекомендовал себя в качестве надежного способа обмена сообщениями, который к тому же предоставляет куда больше разных возможностей, но, который, (пока?) все еще менее популярен чем та же icq. К тому же jabber поддерживается многими программами, такими как например Qip Infinium и если вы уже пользователь аськи, то скорее всего вам даже не понадобится устанавливать никаких дополнительных программ.

Надеюсь, что я вас убедил и мы можем приступить к установке php-кода. Сначала вам нужно скачать отсюда набор классов для работы с jabber и распаковать его в отдельную директорию на веб-сервере. Этот архив содержит также два примера реализации jabber-клиента. Если вы планируете написать собственный скрипт, который более широко использует возможности протокола чем просто отправка информационного сообщения, то вам желательно будет с ними ознакомиться.

Для отправки сообщений можно использовать мой класс messageSender(), код которого приведен ниже.

// include the Jabber class
require_once(”class_Jabber.php”);

define(”RUN_TIME”,30); // максимальный срок работы скрипта. Здесь стоит 30 секунд.

class messageSender
{
var $subject, $message;
var $username, $passw, $resource, $server;

function __construct($username, $passw, $server, $resource=NULL)
{
$this->username = $username;
$this->passw = $passw;
$this->resource = $resource;
$this->server = $server;

//создать экземпляр основного класса
$this->jab = new Jabber(true);
$this->first_roster_update = true;

$this->jab->set_handler(”connected”,$this,”handleConnected”);
$this->jab->set_handler(”authenticated”,$this,”handleAuthenticated”);

}

//эта функция вызывается автоматически при установлении соединения
function handleConnected() {
//если соединение установлено, пытаемся авторизоваться…
$this->jab->login($this->username,$this->passw);
}

//вызывается если авторизация прошла успешно
function handleAuthenticated() {
//собственно отправка сообщения
if ($this->jab->message($this->sendto, ‘normal’, NULL, $this->message, NULL, $this->subject)) {
$this->jab->terminated = true;
}
}

function sendMessage($sendto, $subject, $message){
//установка соединения
if (!$this->jab->connect($this->server)) {
die(”Could not connect to the Jabber server!\n”);
}

$this->subject = $subject;
$this->message = $message;
$this->sendto = $sendto;

// запуск цикла обработки событий
$this->jab->execute(1,RUN_TIME);

//прощаемся с сервером…
$this->jab->disconnect();
}

}

Сохраните этот класс в файл messagesender.class.php и положите в ту же папку, что и остальные файлы из установочного архива. Теперь вы готовы отправлять сообщения. Код, который вы будете добавлять в свои функции и классы будет примерно таким:

require_once(’/путь/к/директории/где/установлены/файлы/messagesender.class.php’);
$obj_sender = new messageSender(’логин’, ‘пароль’, ‘jabber-сервер’);
if (isset($obj_sender)) $obj_sender->sendMessage(’jabber-адрес_на_который_вы_отправляете_сообщение’, ‘тема’, ‘текст сообщения’);

Примерное время, которое требуется для отправки сообщения 2-3 секунды. Сама установка занимает немного больше времени. ;)

Если вам понравился этот сайт, вы можете подписаться на rss

Отзывы: Комментариев нет

Ваш отзыв

Имя (*)

E-mail (*)

Сайт

Сообщение

Архивы

Реклама

службы мониторинга серверов