Сегодня 18 сентября, четверг ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7281
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Хабрахабр: PHP / Блог / Захабренные
Хабрахабр: PHP / Блог / Захабренные
Голосов: 1
Адрес блога: http://habrahabr.ru/blog/php/
Добавлен: 2008-06-12 19:52:35 блограйдером ZaiSL
 

Приведение к типам в Yii::app()->request

2012-08-17 11:49:58 (читать в оригинале)

Всем привет!

Хочу поделиться с вами небольшим решением проблемы, с которой столкнулся при переносе части данных проекта в mongodb.
Изначально у нас использовалась только Mysql и все параметры приходящие от клиента вполне себе позволяли получать данные из базы без каких-либо проблем.

<?php
   $id = Yii::app()->request->getParam('id', 0);
   $data = Data::getForId($id);
?>

А суть в том, что для mysql нет разницы [select * from data where id = 1] или [select * from data where id = '1'].
Но mongodb типы данных различает, по этому нельзя найти запись используя условие id == '1' если id в mongodb является числом.

посмотреть решение

Мониторинг производительности PHP-кода с помощью Pinba

2012-08-16 13:14:44 (читать в оригинале)

Давайте представим себе типичный, набирающий популярность стартап, использующий, например, PHP или Python. Сначала все находится на одном сервере — PHP (или Python), Apache, MySQL. Затем вы выносите MySQL на отдельный сервер, устанавливаете nginx для раздачи контента, возможно, добавляете memcached для кеширования и еще несколько серверов приложений…

Со временем число серверов будет расти, и рано или поздно вы зададитесь вопросами
«А что сейчас вообще происходит с системой? Как часто выполняется тот или иной скрипт и как долго? Какие операции занимают большую часть времени?» Системы мониторинга типа Zabbix дают лишь общую, поверхностную картину состояния приложения.

Чтобы получить ответы на эти вопросы, в Badoo был разработан сервиc мониторинга и статистики в реальном времени — Pinba. В данной статье мы расскажем о нашем опыте использования его для мониторинга и профайлинга нашей системы.
Читать дальше →

Использование Composer для генерации автозагрузчика, поддерживающего legacy-код

2012-08-16 08:11:17 (читать в оригинале)

В настоящий момент во многих проектах с богатым наследием код представляет собой смесь из различных подходов, от PHP 3 до PHP 5.

В PHP 3 мы использовали библиотеки функций, файлы подключения к базе данных, файлы переопределения настроек php.ini и так далее.

В PHP 4 и 5 мы создавали классы, именование файлов которых было сильно кастомизировано, от package/class.myclass.inc до Package/MyClass.php.

В эпоху PHP 5 мы получили стандарт PSR-0, описывающий стандарт именования файлов классов PHP для повышения совместимости их автозагрузки.

Код постепенно начал превращаться в не очень приятное месиво из require_once и spl_autoload_register. Прямо скажем, месиво не сильно управляемое и время от времени приводящее к фатальным ошибкам «функция не существует» или «класс не существует» при разработке нового кода.

И вот, внезапно к нам на помощь пришёл менеджер зависимостей Composer (github-репозиторий).

Хочу подчеркнуть, что Composer не является только лишь генератором автозагрузчика. Задачи, которые он выполняет намного более широки и интересны.

Давайте посмотрим, как мы можем применить Composer для генерации автозагрузчика для нашего legacy-кода.
Читать дальше →

Отчёт о неудачной попытке получить заявленную эффективность от prepared statements

2012-08-15 12:05:00 (читать в оригинале)

Рассказывая в своей статье о типичных заблуждениях, связанных с защитой от SQL инъекций, среди прочих я отметил тот факт, что серверные подготовленные выражения не работают в PHP по заявленному эффективному сценарию — 1 раз prepare(), потом 1000 раз executе().

Ну, то есть, в теории-то они работают — в пределах одного запуска скрипта. Но много ли вы знаете скриптов (написанных профессиональными программистами), которые выполняют кучу одинаковых запросов? Вот я тоже не знаю. Повторяющихся запросов (каких-нибудь множественных апдейтов) — доли процента, а в массе своей запросы уникальные (в пределах одного скрипта).
Соответственно, для нашего уникального запроса сначала выполняется prepare(), потом — execute(), потом скрипт благополучно умирает, чтобы, запустившись для обработки следующего HTTP запроса, заново выполнять prepare()… Как-то не слишком похоже на оптимизацию. Скорее — наоборот.

Но неужели нет способа как-то закэшировать подготовленный запрос между запусками?
И тут меня осенила идея!

[Из песочницы] Реализация паттерна Компоновщик (Composite pattern) на php

2012-08-14 17:15:08 (читать в оригинале)

Введение


На определенной стадии изучения серверного программирования мне захотелось написать свой простенький фреймворк. Я рассчитывал, что это поможет более глубоко понять идеологию MVC и Zend Framework в частности. Когда дело дошло до части представления и генерации html я вспомнил о паттерне Компоновщик (Composite pattern). Возможно я несколько исказил его применение, но мысль пошла оттуда.
Читать дальше →


Страницы: ... 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 ... 

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по сумме баллов (758) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.