:-)
  • PHP 05.02.2010 2 Comments

    Я уже давно обещал выложить исходные коды судоку (поиграйте в судоку, если еще не играли). Я думал, что со временем исправлю код, сделаю лучше, но нет ни времени, ни желания. Поэтому лучше я выложу как есть, а вы уж сами улучшайте. Посмотреть код. Далее в посте будут комментарии. Читать дальше...

    Tags: , ,

  • *nix, PHP 05.02.2010 2 Comments

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

    Читать дальше...

    Tags: , , , ,

  • *nix, PHP 05.02.2010 No Comments

    Хочу рассказать вам про многопоточные приложения, взаимодействие процессов (IPC) и применение всего этого на PHP. В качестве примера мы возьмем счетчик с эксклюзивным доступом, доступный для всех процессов.

    Читать дальше...

    Tags: , , ,

  • *nix, PHP, SQL 21.01.2010 No Comments

    Такая ошибка возникла у меня после перехода на PHP 5.3. Решение я нашел на http://stackoverflow.com, можете там посмотреть, чтобы узнать про эту ошибку более подробно. Выглядит она вот так:

    Warning: PDO::__construct() [pdo.--construct]: [2002] Invalid argument (trying to connect 
    via unix://) in /home/blah-blah-blah.php on line 9
     
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002]
    Invalid argument' in /home/blah-blah-blah.php:9 Stack trace: #0
    /home/blah-blah-blah.php(9): PDO->__construct('mysql:host=localhost;dbname=db', 'USER', 
    'PASSWORD') #1 {main} thrown in /home/blah-blah-blah.php on line 9

    Решается она так: вместо localhost, при написании DSN для PDO пишите 127.0.0.1. А так же стоит указать путь к сокету MySQL в php.ini: pdo_mysql.default_socket=/var/run/mysqld/mysql.sock

    Tags: , , ,

  • Мне нужно было получать строку из файла по порядковому номеру. То есть первую, десятую, 390815-ую, и т.д. Сначала мне хватало цикла fgets, который прокручивал до нужной строки. На строке 500000 такой способ у меня занимал уже почти минуту, что явно плохо. Stream_get_line был совем не быстрее, а даже медленнее процентов на 30.

    Первый из костылей, пришедших мне в голову был fseek до значения в 500000 строк (посчитал байты), а оттуда уже крутил fgets. Но так как у меня идет обработка до 100 тысяч строк в сутки, то через пару дней опять пришлось высчитывать смещение для fseek. Опять же, требовался другой выход. И я его таки нашел.

    function getFileLine($file, $line) {
        return trim(exec("head -n $line $file | tail -n 1"));
    }

    Head берет N первых строк файла, tail N последних. Все гениальное просто. 1 миллионная строка берется из файла за 1.027 сек, 40 миллионная - 30 секунд, что очевидно быстрее прокручивания fgets. (Конечно, если не прыгать fseek до 40 миллионной записи и считывать 40000001-ую)

    Конечно, решение ограничено *nix системами, но т.к. моя система и без того использует pcntl_fork, она уже была привязана к никсам, так что хуже мне не стало.

    Tags: ,

  • PHP 11.07.2009 7 Comments

    Я взялся за изучение фреймворка Kohana. Подкупил меня размер - чуть меньше мегабайта. Я давно хотел найти быстрый и легкий фреймворк для небольших разработок. Пока я не настолько его изучил, чтобы делать глобальные выводы, но могу рассказать о процессе изучения. Читать дальше...

    Tags: , ,

  • PHP 16.05.2009 2 Comments

    Не так давно я писал про тогглеры (переключатели) в Symfony. Вчера я поработал над ними и существенно упростил их принцип работы, теперь они доступны в качестве плагина. Сразу же дам ссылку, вы можете их скачать в виде PEAR package и просто zip-архив. Дальше я расскажу как этим плагином пользоваться. Читать дальше...

    Tags: , , , ,

  • PHP 02.05.2009 2 Comments

    Этим постом я отвечаю на вопрос в комментариях о том, как я реализовал стрелки вверх и вниз для категорий. Перейдем к делу Читать дальше...

    Tags: , ,

  • PHP 24.04.2009 3 Comments

    Давно я не брал в руки шашек. То есть не писал про symfony. А разработка продолжается. Сайт фактически готов, остаются мелкие доделки, доработка напильником и все такое. О "переключателях" или "тогглерах"(togglers), или не знаю как еще их назвать я уже давно хотел написать. Ну вот и пришло время, получайте. Читать дальше...

    Tags: , , , , ,