Статьи,обзоры,справочники по PHP

Подготовим ПХП для запуска робота


Как вы понимаете, мы пишем не веб-скрипт, который будет активироваться по желанию посетителя, который мышкой кликает по ссылкам, а по какому событию. В соответствии с этим, к примеру, не может идти речи о получении ИП-адреса посетителя или куках. Почтовый робот - это совершенно другая история. В его задачу входит найти файл с письмом(писами) и обработать.

Если вы ниже выберите вариант 1 или 2, вам Апач как CGI не нужен. И наоборот - если у вас нет Апача как CGI, то вы можете использовать только способы 1 или 2, чтобы организовать почтового робота или просто крон. В остальных случаях - Апач как CGI вам нужен. Если вы самостоятельно этого проверить не можете, обратитесь к администратору сервера с вопросом "Как запускать PHP в CGI-режиме?". Если скажет - нет такого, требуйте, чтобы появился :-) В конце концов вам от него нужно только адрес вида /usr/bin/php

получить. Т.е. php - это название программы, а /usr/bin - каталог.



Вариант 1: без CRON, без Command, метод POP3 почты.

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

Как забрать почту с POP3 ящика. Надо изучить сокеты и POP3. Поверьте, это просто. Чтобы понять сокеты, предствьте, что это простые файлы, в которые можно писать и читать. Для забора почты нужно открыть сокет с сервером почты на 110 порту (порт POP3 сервера). Далее, как в файл, надо написать USER ваш_логин

(пример: fputs($sock,"USER dima");), затем PASS ваш_пароль. После этого командой LIST получить список писем, еще командой RETR номер

взять текст письма и стереть его с сервера. Всего надо изучить 6-7 команд протокала POP3. Это выходит за рамки данный статьи.

Теперь попробуем запускать нашу программу каждые 5 минут. К сожалению, методами ПХП напрямую это не возможно. Но мы попробуем. Допустим, на ваш сайт ходят люди :-) Если на ваш сайт никто не ходит, данный способ не заработает. Нужно сделать функцию (в каком-то общем файле), которую будут запускать из всех ваших скриптов. Функция должно проверять время модификации файла-флага, например, flag.txt. Если время модикации больше, чем 5 минут назад, то пора выполнять функицию проверки почты. После проверки почты, надо файл-флаг открыть на запись и закрыть, чтобы время модификации было изменено. Если же время модификации не превысело 5 минут, то функция ничего не делает. Как видите, ничего хитрого.

Ниже идет пример, который описывает более конкретно реализацию регулярного запуска фужного скрипта. Это не конкретная программа, а реальный пример.



Содержание раздела