четверг, 11 марта 2010 г.

Создание собственных функций в PHP

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

читать полностью

пятница, 18 декабря 2009 г.

Ошибки в PHP. Вывод, перехват, скрытие.

Ошибки, могут быть как друзьями программиста так и его врагами. Как говорится у каждой стороны две медали.
 Насколько часто вы бьетесь над программой, восклицая про себя: «Чего же ей еще не хватает?!». Помню, когда я был новичком, в самом начале пути познания PHP, у меня это было довольно часто, пока я не научился читать и понимать ошибки. Не стоит воспринимать ошибку как препятствие. Это подсказка для вас. Описание проблемы. Намного легче заниматься отладкой когда, если что-то не работает, видишь ее перед глазами. Поэтому, во время отладки стоит их включать если они отключены. Включаются ошибки достаточно просто. Можно включать их как через .htaccess так и с помощью самого PHP кода. 

далее

понедельник, 7 декабря 2009 г.

Труд программистов или все в этой жизни дается нелегко.

Наверное, этот пост следовало написать с самого начала, но я, честно признаться, как-то не думал об этом. На мысль описания работы программистов меня натолкнули..вы не поверите, именно расплодившиеся в огромном количестве сайты SEO тематики. Слишком много людей сейчас хотят зарабатывать большие деньги легко, поэтому многие пытаются познать SEO, забывая что ничего в этом мире легко не дается и на 10-20 человек занимающихся раскруткой сайтов только 1 имеет действительно хорошие прибыли. Но, я сейчас не об этом. <--more-->
Бытует мнение, что программисты получают достойные деньги за свою работу, ведь кому как не им, работающим «мозгами» получать «бабки». Но это далеко не правда. Действительно хорошие деньги получают либо Team лидеры, которые являются Профессионалами. Именно так, с большой буквы. Либо же те, кто занимаются исключительно своим проектом и проект удачен. И тех и других не очень большое число. В большинстве своем деньги весьма средние, а труд…ну я сейчас опишу, а вы судите сами. Работать приходится не только по 8 часов на работе, но иногда и дома, часто до ночи. Так в общей сложности у компьютера я провожу порядка 12 часов в сутки, что отнюдь не положительно сказывается на здоровье. Кроме того, у каждого программиста, я думаю, бывают периоды «отупения», когда чего-то не хватает и мозги полностью отключаются к чертям собачьим. Работодателю же все равно что вас там тревожит, он ставит сроки и платит деньги и, не взирая на ваше состояние, вы должны сдать проект в срок. Бывало так, что чтобы успеть к срокам спал по 4 часа в сутки.. Можно так же рассказать и о недобросовестности заказчиков, если говорить о фрилансе, и о неудавшихся по причине, например непроработанности дизайна (не зависящей от вас), проектах.. о самодурстве заказчиков которые не прислушиваются к вашему мнению на выходе, получая фиг знает что, только потому что не захотели услышать вас. Нюансов куча…
Вы только не подумайте, что я жалуюсь на жизнь. Нет, я люблю свою работу, я могу сидеть ночами (до определенного предела разумеется), ибо мне это интересно, и это самое главное. Если вы считаете, что программирование принесет вам золотые горы и только поэтому осваиваете PHP-хочу вас огорчить это не так…да и нелюбимое занятие превратится в адскую муку, если заниматься им каждый день. Поэтому настоятельно рекомендую еще раз подумать, а надо ли оно вам…учиться программировать.

пятница, 4 декабря 2009 г.

MySQL, создаем первую таблицу.

В этой статье, я постараюсь кратко рассказать о достаточно необьятной теме, типах столбцов(данных) в MySQL.
Итак, пришла пора вам задуматься о создании первого более-менее серьезного скрипта. Например гостевой книге. Как же хранить сообщения в ней? Можно конечно в файликах, но задумайтесь какой гемморой это. Если сообщений много => много мелких файликов..а это не есть гуд. Да и листинг сообщений (не вываливать же на одну страницу например 1000 постов) тоже гемморой еще тот. что ж нам помогут базы данных. В них легко можно хранить информацию.

вторник, 1 декабря 2009 г.

Новый релиз PHP 5.3.1

19 ноября команда разработчиков PHP представила новый релиз 5.3.1 направленный на увеличение стабильности ветки 5.3.x По завялениям разработчиков исправлено более 100 ошибок, некоторые из которых связаны с безопасностью. Всем рекомендуется обновиться до этой версии.
Вот некоторые из изменений:

  1. Добавлена директива «max_file_uploads» в php.ini, которая может установить количество запросов при закачке файлов, для предотвращения DOS атак.
  2. Исправлен обход режима safe_mode в tempnam()
  3. Исправлен обход «open_basedir» директивы в функции posix_mkfifo
  4. Исправлено отсутствие safe_mode_include_dir

Более подробный лог изменений здесь.

суббота, 14 ноября 2009 г.

MySQL, или удобное хранение данных.

Собственно, что такое MySQL? Это средство для удобного хранения информации. Согласитесь с файлами работать неудобно, а особенно это неудобство чувствуется если их очень много. А MySQL спокойно справляется с 25-гигабайтной базой..не без напрягов конечно, но в целом весьма неплохо.
Итак SQL-Структурированный Язык Запросов. "Почему же я заговорил о нем, ведь данный ресурс посвящен PHP",-думаете вы. Да все просто. В PHP очень хорошо реализована схема работы c базами данных (БД) MySQL. Приведу простой пример, если вы ничего не понимаете в MySQL не расстраивайтесь, пока вам это и не нужно, позднее постараюсь немного обьяснить что к чему. Сейчас лишь разберитесь как с ним общается PHP.

0;");
//посылаем запрос к MySQL

if(mysql_num_rows($query))
{
//mysql_num_rows возвращает количество строк выбранных в БД
while($data = mysql_fetch_assoc($query))
{
//В цикле берем результат запроса в массив и выводим

print '
';

print_r($data);

print '

';
}
}
?>

Итак что же за белиберда здесь написана? Для начала нам надо подсоединиться к MySQL для этого используем mysql_connect, где первый параметр сервер к которому подключаемся, второй-имя пользователя БД, третий-пароль пользователя БД. После чего выбираем БД с которой хотим работать с помощью mysql_select_db. Далее, шлем составленный нами, запрос к серверу. Получаем идентификатор (ресурс id наподобие идентификатора открытого файла) и читаем результаты в массив при помощи цикла while и оператора mysql_fetch_assoc. Но перед этим, чтобы цикл нам не выдал ошибки, нужно проверить, а есть ли вообще результаты. В этом поможет функция mysql_num_rows, которая считает количество результатов, возвращенных MySQL. Конечно это примитивный пример, но функции эти основные, без которых освоиться с MySQL будет просто нереально. Настоятельно рекомендую почитать в мануале как они ведут себя.
Так же, часто можно использовать вместо mysql_fetch_assoc другую функцию mysql_fetch_array, которая в зависимости от параметра создает или ассоциативный или пронумерованный или смешанный массив результатов. Достаточно часто это бывает очень удобно. При работе с базами данных надо всегда помнить, что большое количество запросов, или очень сложные запросы, могут сильно напрячь сервер и, если вы хоститесь, у обыкновенного хостера, а не на ВДС или Дедике надо как можно сильнее оптимизировать работу с MySQL. К примеру настоятельно не рекомендуется использовать в цикле запросы, даже очень простые. На странице, на мой взгляд, не должно быть более 20-30 запросов (в зависимости от посещаемости ее пользователями, возможно, если нельзя отказаться от запросов, стоит как-то кэшировать ее) . Ну на этом пожалуй закончу, ибо о MySQL можно говорить довольно долго и существует очень много различных аспектов работы с ней. В дальнейшем постараюсь вернуться к этому вопросу и, как можно более подробно, в рамках моего ресурса разумеется, описать MySQL

среда, 28 октября 2009 г.

Ускорение работы сценариев PHP

Любой уважающий себя программист должен понимать, что сервер имеет конечное число ресурсов, которые рано или поздно заканчиваются. Поэтому требуется как можно тщательнее оптимизировать программный код, дабы потом не хвататься за голову и не сокрушаться что сервера не справляются. Каким же образом оптимизировать код? На самом деле, если не затрагивать MySQL (о чем надо, я считаю, говорить отдельно), способов оптимизации не так уж и много. Точнее их не мало, но результат от них, по отдельности очень маленький, а суммарно, как говорится, «копейка рупь бережет».. Сейчас я хочу перечислить то, что знаю, и чем очень часто пользуюсь.

  1. Вы должны осознавать что при преобразованиях (preg_replace, str_replace) регулярки используют гораздо больше ресурсов чем строковые функции, поэтому рекомендую там где можно обойтись использовать именно str_replace или str_ireplace
  2. Помните о том, что в большинстве случаев, если все же надо использовать регулярку preg_match работает быстрее чем eregi
  3. Незачем генерировать файлы содержащие большие обьемы данных, если часто с ними надо работать сценарию. Гораздо лучше использовать множество мелких файлов. Хотя и в количестве файлов надо стараться знать меру.
  4. Незачем повторно выполнять одни и те же действия если вы можете создать переменную, которая будет содержать результат действия.
  5. Надо помнить, что например функция echo при выводе работает быстрее чем print, а вывод заключенный в одиночные кавычки работает быстрее чем в двойные. Связано это с тем, что в двойных кавычках текст еще и обрабатывается (переменные преобразуются), а в одиночных выводится как есть.
  6. Не стоит вводить переменные с длинными именами, в дальнейшем это может аукнуться весьма сильно.

Все это конечно лишь основные аспекты, и огромного прироста производительности не будет, но если вы это будете соблюдать, будет при оптимизации чуточку проще.) В дальнейшем я обязательно постараюсь описать, что может дать большой прирост производительности, но это уже будет относиться к серверной части и к MySQL.