Analitycs

Показаны сообщения с ярлыком PHP. Показать все сообщения
Показаны сообщения с ярлыком PHP. Показать все сообщения

среда, 19 октября 2011 г.

Как настроить Nginx + php-fastcgi для Wordpress?

По просьбе Олега "TheAppleGeek" выкладываю рабочий конфиг Ngnix с php-fastcgi для Wordpress c включенным плагином W3 Total Cache
server {
    listen 80;
    server_name host.ru;
    index index.php;
    root /var/www/vhosts/host.ru/httpdocs;

    location ~ \.php$ {
                limit_conn three 20; 
                include         /etc/nginx/include.d/default_fastcgi_params.conf;
                fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_pass    php;
    }

    location ~ /\.ht {
        deny all;
    }

    if (!-e $request_filename) {
        rewrite ^(.+)$  /index.php   last;
    }
}

и общий для всех хостов на машине /etc/nginx/include.d/default_fastcgi_params.conf
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

fastcgi_connect_timeout 60;
fastcgi_send_timeout 60;
fastcgi_read_timeout 60;

понедельник, 19 сентября 2011 г.

PHP: echo var_export($xx) ничего не выводит

Иногда с логики построения функций PHP хочется биться головой об стену.

Конструкция

logActivity(var_export($vars));

Не выводит в лог НИЧЕГО. Ломаю голову, пытаясь понять, куда делись переменные.
Подсказка проста - второй аргумент.

logActivity(var_export($vars, TRUE));

пятница, 16 сентября 2011 г.

Как исправить Fatal error: Cannot use object of type stdClass as array (PHP+JSON)

Всем хороша в пятом php функция json_decode, только по умолчанию декодирует JSON строку в объект класса stdClass, с которым нельзя работать как с массивом.

Ибо конструкция

$json = json_decode($string);
echo $json['result'];

приведет к ошибке
Fatal error: Cannot use object of type stdClass as array

Правится это добавлением второго параметра
$json = json_decode($string, true);
echo $json['result'];

четверг, 15 сентября 2011 г.

Habrahabr осеннее обострение 2011 - часть 2

Продолжение цикла фейеричных статей цикла "Осеннее обострение" на хабре. Дополнение к части 1.

Вот тут человек всерьез предлагает отдавать весь контент для Apache через PHP с зипованием всего же - тем PHP. Причем - "исследует" и строит графики...

"Мы не ищем легких путей. Стоя... и в раскачивающемся гамаке - наш выбор" (с)

понедельник, 12 сентября 2011 г.

Как определить какая версия PHP/eAccelerator используется?

$ php -v


PHP 5.1.6 (cli) (built: Mar 31 2010 02:39:17)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
    with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator

пятница, 9 сентября 2011 г.

Проблема в PHP+cURL+CURLOPT_POSTFIELDS - после обновления

Обновив PHP и cURL поймал забавность - старая конструкция, нормально работавшая несколько месяцев

 $data = array(
  'id' => $id,
 );
 
 $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, implode('&', $data));

 $result = curl_exec($ch);

 curl_close($ch);
  
 return json_decode($result);

перестала отправлять в POST данные.

Покурив маны, нашел ошибку в коде - не нужно implode на массив

 $data = array(
  'id' => $id,
 );
 
 $ch = curl_init();

 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

 $result = curl_exec($ch);

 curl_close($ch);
  
 return json_decode($result);

Нет, ну понятно - как бы косяк, но тогда вопрос - ПОЧЕМУ ЭТО РАБОТАЛО?

P.S. "Чем дальше в лес - тем толще партизаны" (с) Ненавижу...

вторник, 6 сентября 2011 г.

Habrahabr - такой хабр... осеннее обострение?


На Хабр можно ходить с разными целями - почитать что-то умное (иногда)... или поржать, потроллить на худой конец. Но последняя неделя - доставляет особенно.

Опрос про опыт работы PHP кодера и место его работы (офис/фриленс)

Разумеется, вариант "я PHP кодер, стаж больше 5 лет, и перешел нахрен на другой язык (python/ruby)" - автор забыл, но ему напомнили... После некоторого глумления в комментах пост исчез. Скриншотов снять не успел.

Создаём сайт на PHP без использования расширения в именах файлов

Здравствуй, Хабр! 
Многие из нас видели сайты, страницы которых не содержат расширения файла. Например, компания Google для поиска использует файл вида /search?q=%s. Многие также знают, что, как правило, такие сайты написаны с использованием технологии Java. Однако не все знают, что также можно делать и для php-скриптов. Если Вам стало интересно, прошу под кат.

Мне стало БЕЗУМНО интересно, но увы - пост уже ушел...

Анализируем производительность сервера

То человек, ВСЕРЬЕЗ предлагающий для построения графиков нагрузки серверов у кластера использовать Excel. Было тут, кеш Гугля

Аренда сервера или виртуальной машины в сети становятся все доступнее. На момент написания статьи аренда мощного 4-х ядерного сервера с неограниченным трафиком обходится всего в 70-100 долларов в месяц. 


По этой причине многие компании, веб-мастера и разработчики арендуют сервер для нескольких проектов вместо использования разделяемого хостинга. Преимущества очевидны: больший контроль над работой приложений и полное использование ресурсов сервера для своих проектов. Как определить, что производительности сервера стало недостаточно и пора производить обновление или замену? Какой из компонентов стал бутылочным горлышком? Эта статья поможет самостоятельно ответить на вопрос — требуется ли серверу замена? — используя сводные таблицы Microsoft Excel. 


Применяя описанный метод, для вас не составит труда подготовить красивый иллюстрированный отчет руководству, а также быстро найти узкие места в системе. Картинок будет много! Нам понадобятся две вещи: данные и инструмент их анализа. Для анализа данных производительности мы будем использовать «Сводные таблицы» из Microsoft Excel. В качестве примера данных используется записанный в CSV файл результат работы Perfomance Monitor. Это стандартный инструмент Windows Server, однако аналогично можно обработать данные, полученные на любой системе. 

Вот не могу понять - то ли осеннее обострение, то ли кто-то просто массово стебется.

Кстати, в третьем варианте человек-то именно Excel знал очень неплохо - судя по скриншотам. ;-)

понедельник, 5 сентября 2011 г.

Как скопировать dict в Python? copy.deepcopy

При частом переключении с PHP на Python часто ловишь баги и проблемы с копиями объектов, особенно - ассоциативных массивов/dict.
Что бы избежать неявных изменений данных - нужно делать deepcopy - полное копирование.

Вариант новичковый

    node_params = {}
    for key, value in data['params'].iteritems():
        node_params[key] = value

Вариант true pythonic ;-)

    from copy import deepcopy
    ...
    node_params = deepcopy(data['params'])    
Внимательнее с копиями ;-)

вторник, 30 августа 2011 г.

Как вырезать BB-code из текста на PHPBB?

Если нужно вырезать BB-коды из PHP - поможет следующий регексп.

$text = preg_replace ('/\[[^]]*\]/', '', $text);

Особенно актуально для PHPBB 2 версии, так как в 3-й уже появилась функция strip_code.

А хранит PHPBB в базе сложные коды вида [url:12DAsca][/url:12DAsca], где 12DAsca - дополнительная защита - так что стандартные функции CMS не прокатывают.

понедельник, 25 июля 2011 г.

Как создать template продукта в WHMCS?

При написания модуля продукта сервиса для биллинга WHMCS на PHP проблема - не работают кнопки.

Решение: в модуле ОБЯЗАТЕЛЬНО должен быть объявлен метод для конфига - даже если ничего в конфиге нет


 function test_ConfigOptions() {  
     $configarray = array();  
     return $configarray;  
 }  
 function test_AdminCustomButtonArray() {  
      $buttonarray = array(  
           "Reinstall OS" => 'reinstallos',  
      );  
      return $buttonarray;  
 }  
 function test_reinstallos($params) {    
      $error = 'Something strange here...';  
      $ok = TRUE;  
 #     logActivity('test_reinstallos');       
      return $error; #'success';   
 }