xandeadx.ru Блог музицирующего веб-девелопера

PHPКоротко о CGI, FastCGI, PHP-FPM и mod_php

Опубликовано в

Решил навести в голове порядок о том, как работают вместе веб-сервер и PHP.

CGI

Common Gateway Interface, "общий интерфейс шлюза" — это стандарт, который описывает, как веб-сервер должен запускать прикладные программы (скрипты), как должен передавать им параметры HTTP-запроса, как скрипты должны передавать результаты своей работы веб-серверу. Прикладную программу взаимодействующую с веб-сервером по протоколу CGI принято называть шлюзом, хотя более распространено название CGI-скрипт или CGI-программа.

PHPAdminer — скрипт управления базами данных

Опубликовано в

Adminer — это легковесный аналог phpMyAdmin, который умещается в один файл и не требует установки (достаточно скопировать php файл на сервер). Скрипт обладает практически всеми возможностями своего старшего собрата — создание/просмотр/редактирование/удаление таблиц, полей, индексов, триггеров; выполнение sql запросов; экспорт/импорт данных и многое другое (таблица сравнения).

PHPКак найти всех родителей элемента в иерархическом (древовидном) массиве

Опубликовано в

Есть массив:

$tree = array(
    '1' => array(
        '1.1' => array(),
        '1.2' => array(),
        '1.3' => array(
            '1.3.1' => array(),
            '1.3.2' => array(
                '1.3.2.1' => array(),
                '1.3.2.2' => array(),
                '1.3.2.3' => array(),
            ),
            '1.3.3' => array(),
        ),
    ),
    '2' => array(
        '2.1' => array(),
        '2.2' => array(),
    ),
    // ...
);

Нужно, зная ключ элемента, найти всех его родителей:

PHPОпределить "первое воскресенье месяца"

Опубликовано в

Задача — узнать день месяца у "первого воскресенья августа", "второго понедельника сентября" и т.д.:

/**
 * @param integer $weekNumber Номер недели.
 * @param integer $dayOfWeek Порядковый номер дня недели.
 * @param integer $monthNumber Порядковый номер месяца.
 * @param integer $year Год.
 * @return integer День месяца.
 */
function compute_day($weekNumber, $dayOfWeek, $monthNumber, $year)
{
    // порядковый номер дня недели первого дня месяца $monthNumber
    $dayOfWeekFirstDayOfMonth = date('w', mktime(0, 0, 0, $monthNumber, 1, $year));
 
    // сколько дней осталось до дня недели $dayOfWeek относительно дня недели $dayOfWeekFirstDayOfMonth
    $diference = 0;
 

PHPПример получения гео-координат по адресу с помощью API Яндекс.Карт

Опубликовано в

Код выводит на экран координаты адреса Москва, ул. Льва Толстого, 16, которые в дальнейшем можно использовать для отметки на карте:

$params = array(
    'geocode' => 'Москва, ул. Льва Толстого, 16', // адрес
    'format'  => 'json',                          // формат ответа
    'results' => 1,                               // количество выводимых результатов
    'key'     => '...',                           // ваш api key
);
$response = json_decode(file_get_contents('http://geocode-maps.yandex.ru/1.x/?' . http_build_query($params, '', '&')));
 
if ($response->response->GeoObjectCollection->metaDataProperty->GeocoderResponseMetaData->found > 0)
{
    echo $response->response->GeoObjectCollection->featureMember[0]->GeoObject->Point->pos;
}
else
{

PHPПример запроса на проверку параметров платежа в Рапиде (rapida.ru)

Опубликовано в

Писал скрипт под рапиду (rapida.ru) для автоматизации платежей. Долго мучался с параметрами curl-а, но в итоге победил :) Пример проверки на правильность платежа (ф-я check):

$params = http_build_query(array(
  'function'   => 'check',
  'PaymExtId'  => ...,                  // идентификатор платежа
  'PaymSubjTp' => ...,                  // код получателя из каталога
  'Amount'     => sprintf('%03d', ...), // сумма в копейках
  'Params'     => ...,                  // параметры платежа
  'TermType'   => ...,                  // тип платежного инструмента
  'TermId'     => ...,                  // идентификатор точки
  'FeeSum'     => 0,                    // сумма комиссии
), '', '&');
 
$ch = curl_init('https://online.rapida.ru/test/?' . $params);

PHPКак из php скрипта асинхронно выполнить другой скрипт (т.е. не дожидаясь его окончания)

Опубликовано в

Например есть скрипт a.php, в котором нужно вызвать тяжеловесный скрипт b.php и не дожидаясь его окончания продолжить работу. Одно из решений это сокеты:

PHPКак поменять местами элементы массива

Опубликовано в

Код меняет местами первые два элемента массива $city (Москва и Питер):

$city = array(0 => 'Москва', 1 => 'Питер', 2 => 'Вологда');
list($city[0], $city[1]) = array($city[1], $city[0]);
print_r($city);

Результат:

Array
(
    [0] => Питер
    [1] => Москва
    [2] => Вологда
)