7 марта 2008 г.

Чудо язык PHP

Я просто в шоке от PHP! Вообще то я никогда этот язык не использовал и, судя по всему, теперь никогда использовать не буду :)

Настраиваю DSPAM. В дополнительном пакете поставляется удобная утилитка, которая обучает спам фильтр. Что самое прикольное - этот скрипт написан на PHP и запускается как обыкновенная программа в командной строке.

Задача утилиты прочитать с почтового ящика imap сервера письма из папок spam и ham, и соответственно научить антиспам фильтр. К ящикам она обращается напрямую, как к файлам файловой системы. А вот для удаления писем из ящика вызывает функции PHP для работы с imap.

Сначала, естественно открывает ящик:

$stream=@imap_open($imapmailbox,$imapuser,$imappasswd);

И вот тут то у меня случился страшный затык. Программа антиспам фильтр обучает, а вот письма тз папок не удаляет. При вызове этой функции просто завершает работу с котдом возврата 255. Плин! Бился над этой проблемой два дня. Как оказалось, я просто забыл поставить пакт php-imap.

Чудо язык PHP! Чудо! Нормальный язык, тот же Perl страшно бы ругнулся и послал меня за функцией, а это Чудо, тупо, молча, без предупреждений завершал работу.

Нда. Большое спасибо автору скрипта, который использовал PHP для скрипта! Зачем он использовал не предназначенный для этого язык я не понимаю.
И большое спасибо авторам PHP, за чудо язык, который так забавно себя ведет :)

8 комментариев:

  1. Анонимныймарта 07, 2008 1:19 PM

    Добрый День!

    Тут наверное, вопрос к автору, зачем он консольный скрипт на php написал ))

    Из командной строки я ни разу скрипты php не запускал, а вот если бы Вы использовали несуществующую функцию в каком-нибудь web сценарии, сразу бы свалилось в лог веб сервера, или, если у Вас в php.ini включено отображать ошибки, то прямо бы и вывелось на странице fatal error)

    При написание web-сценариев, мне какжется php гораздно удобнее, чем perl/

    ОтветитьУдалить
  2. Именно!!! Зачем автор PHP для этого использовал, я так и не понял.

    Пришлось тупо во все строки echo(""); писать, что бы разобраться где проблема :(

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

    ОтветитьУдалить
  3. В php @ ставится для подавления ошибок, и естественно у тебя ничего не выдало про неустановленный модуль.

    ОтветитьУдалить
  4. Первое, что я сделал - убрал @ и тут же получил сообщение о синтаксической ошибке - не такой функции. Не то, что нет модуля, просто синтаксис типа не правильный :(

    Это теперь я понимаю, что это означает и как это надо интерпретировать :) А тогда...

    ОтветитьУдалить
  5. bigkaa, согласись, что если у тебя нет опыта работы в php не делает его ужасным языком. Я не защищаю php, мне просто кажется, что вывод который ты сделал из этого случая не логичен.

    ОтветитьУдалить
  6. Дык я и не скрываю, что я не знаю PHP. Но по моему мнению, столь очевидные вещи язык должен предусматривать, особенно, если он позволяет писать не только WEB, но и скрипты.

    Согласитесь, что это существенная недоработка.

    ОтветитьУдалить
  7. У каждого инструмента - свои особенности. Например, то, что я не смог настроить VPN в KUbuntu не говорит, что Linux дерьмо.

    ОтветитьУдалить
  8. Ок! Мне ЭТА ОСОБЕННОСТЬ PHP очень не понравилась! Поэтому я им пользоваться не буду. Есть очень позитивные Питон и Перл.

    ОтветитьУдалить