Php

Php postgresql apache: Установка сервера Linux + (Nginx + Apache) + PostgreSQL + PHP на VirtualBox (Ubuntu Server 16.04.3 LTS) / Хабр

Содержание

Оптимизация Apache + PHP + PostgreSQL

После ввода в строй динамического веб-сервера на базе apach + php + postgresql (да и на базе других систем тоже, если честно), вебмастер часто обнаруживает, что производительность системы начинает с большей или меньшей активностью стремиться к нулю, порой его достигая при наплывах посетителей. Стандартными действиями вебмастера при этом являются лихорадочное чтение документации, поиск в Интернете всяческих полезных советов, общение в форумах и прочие телодвижения, типичные для «компьютерного аврала». При этом очень часто находятся какие-то обрывки информации, ответы из серии «у меня заработало, почему у тебя не работает не знаю», противоречивые советы и ссылки на мегабайтные исходники, разбор которых грозит затянуться на несколько лет…

Поэтому ниже предпринята попытка в компактном виде изложить те вещи, которые наиболее значительно влияют на производительность сервера. Нельзя сказать, что этот список является полным и законченным, но он может послужить неплохой пищей для размышлений. А если у вас есть какие-то свои наработки и «идеи по поводу» — пишите автору, он постарается учесть их в следующей редакции этой статьи…

Настройка php

Настройка php, по большому счету, сводится к включению persistent connections и, соответственно, использованию pg_pconnect() вместо pg_connect() в скриптах. Для этого в файле php.ini надо указать pgsql.allow_persistent = on В некоторых форумах встречалась рекомендация установить еще и pgsql.auto_reset_persistent = on для определения «битых» соединений, но то ли «битые соединения» встречаются очень редко, то ли они проявляются как-то незаметно… Словом, этого можно и не делать. Ограничений по количеству соединений в php можно не устанавливать, оставив
pgsql.max_persistent = -1
pgsql.max_links = -1

Эффект от перехода на постоянные соединения очень заметен, особенно на посещаемых сайтах. Загрузка сразу падает процентов на двадцать-тридцать, а то и больше! Только не пугайтесь обнаруживая в top’е кучу postres’ов в состоянии sbwait. ..

Настройка postgresql

Настройка postgresql осуществляется с помощью редактирования файла postgresql.conf и последующего перезапуска постмастера. Несмотря на то, что некоторые параметры можно менять «на лету», практика показала, что полный перезапуск позволяет намного точнее и быстрее отследить влияние тех или иных изменений конфигурации на поведение системы в целом, так что имеет смысл использовать именно этот метод.

Настройка shared_buffers в postgres’е очень важна. Чем больше памяти ему выделено, тем больше данных он сможет использовать не обращаясь к диску. Но если памяти выделить слишком много, то другим процессам ее может не хватить и они будут использовать файл подкачки. Поэтому с настройкой этого параметра придется поэкспериментировать — помимо всего прочего, очень многое зависит от конкретики вашего сайта, в частности от того, насколько часто запрашиваются одни и те же данные. В качестве стартовой точки можно попробовать выделить postgres’у 40% памяти, если он работает на одной машине с веб-сервером, и 70%, если это выделенный сервер баз данных. Только не забудьте, что до того, как указывать количество памяти в файле postgresql.conf, вам надо настроить операционную систему, чтобы она разрешила эту память забрать, иначе postgresql просто не запустится, написав в лог, что не удалось получить требуемую память. О том как настроить выделение необходимой памяти в разных ОС подробно написано в документации postgresql. Эта память выделяется один раз при старте сервера.

Следующий полезный параметр — sort_mem. Эта память используется для сортировки полученных наборов данных, и большое ее количество полезно, если ваши запросы часто используют select … order by… Но с этим параметром надо быть очень осторожным — мало того, что указанное вами количество памяти выделяется каждому процессу, так оно еще и может выделяться несколько раз для сложных запросов! Так что с этим параметром тоже стоит «поиграть» — попробуйте изменять его значения в диапазоне, скажем, от 1 Мб до 128 Кб. Причем иногда результаты бывают парадоксальными — уменьшение памяти ведет к повышению производительности, по всей видимости, из-за создания множества маленьких временных файлов, которые операционная система успешно кеширует в свободной памяти.

Если задачи, выполняющиеся на сервере не являются критичными и возможная потеря нескольких записей при аварии вас не пугает, то стоит также отменить принудительную запись на диск результатов каждой транзакции. Делается это указанием fsync = false. При этом результаты ваших изменений будут хранится в памяти и записываться на диск целыми блоками, что позволит достаточно заметно увеличить производительность. Но, как было отмечено выше, если вдруг сервер «упадет», то результаты нескольких последних обновлений могут быть утеряны.

Очень сильно влияет на скорость работы грамотное индексирование таблиц. Про индексы можно писать (и уже написано) много, но основной принцип — индексировать надо те поля, которые используется для выборки данных (проверяются в where). Составные индексы (в которых используется несколько полей) работают, если отбор происходит с условием and, если используется or, то надо создавать несколько отдельных индексов.

Однако для маленьких таблиц (скажем, до 500 строк) перебор почти всегда оказывается быстрее, чем использование индексов. Тут можно применить маленькую хитрость: в postgresql.conf указать enable_seqscan = false (это запретит перебор для тех таблиц, у которых есть индексы) и удалить все индексы в маленьких таблицах (индексы, автоматически создаваемые для первичных ключей, можно удалить, используя drop constraint).

Неплохой выигрыш в производительности может дать и оптимизация самих sql запросов, особенно тех, которые используются чаще всего. Для того, чтобы их вычислить можно в скриптах перенумеровать все запросы и перед каждым вызовом pg_query() записывать в лог (или в таблицу) номер запроса. А потом просто проанализировать лог… Для того, чтобы посмотреть как будет выполняться запрос можно (нужно!) использовать команду explain. Учтите, что в некоторых случаях даже простое изменение порядка следования условий выборки в секции where может изменить план выполнения запроса!

В некоторых случаях может помочь и использование представлений (views). Дело в том, что при выдаче «обычного» sql запроса сервер его анализирует, создает план выполнения и потом выполняет. А если используется представление, то анализ и составление плана производится только при его создании. Если запросы выполняются часто, то сэкономленное время работы процессора может оказаться весьма заметным. Не говоря уже о том, что запросы в скриптах станут намного короче и нагляднее…

Практически во всех руководствах (и в документации postgresql) можно встретить рекомендации регулярно запускать vacuum analyze, для сжатия таблиц. Рекомендация правильная и полезная, но недостаточная. Практика показала, что без более-менее регулярных запусков vacuum full analyze производительность системы постепенно падает, причем чем дальше, тем больше. Разница между vacuum и vacuum full заключается в том, что full физически переписывает на диске всю таблицу таким образом, чтобы в ней не оставалось «дырок» от удаленных или обновленных записей. Но его недостаток в том, что во время работы таблица полностью блокируется, что может привести к проблемам на популярном сервере — начнет скапливаться очередь запросов, ожидающих доступа к базе, каждый запрос требует памяти, память кончается, начинается запись в swap, из-за отсутствия памяти сам vacuum тоже начинает использовать swap и все начинает работать очень-очень медленно.

Тут можно использовать следующий трюк — во время работы vacuum’а перенаправлять посетителей на страничку с пояснениями, что идет профилактика и сервер восстановит свою работу через несколько минут. При использовании веб-сервера apache это легко делается с помощью mod_rewrite: ваш оптимизирующий скрипт при запуске создает, а при окончании работы удаляет файл /home/site/optimizer.pid, а в apache включается mod_rewrite и указывается
rewritecond /home/site/optimizer.pid -f
rewriterule .* /optimization_message.html

Для того чтобы уменьшить время, в течение которого посетители не могут добраться до вашего сайта, можно перенаправлять посетителей только в то время, когда оптимизируются большие и частоиспользуемые таблицы, а остальные «чистить» паралльно с работой сайта. Если данные в базе обновляются очень часто, то можно, скажем, каждый час запускать vacuum analyze, а раз в сутки — vacuum full analyze. Как правило, «время недоступности» сервера при таком подходе можно сократить до одной-двух минут даже на очень больших сайтах.

Кроме того, надо учесть, что vacuum не оптимизирует индексы, поэтому после отработки vacuum full analyze стоит запускать еще и reindex.

Разумеется, очень большое влияние на производительность оказывает и структура вашей базы данных, но эта область очень сильно зависит от конкретной задачи и в этой статье затрагиваться не будет.

Настройка apache

Конфигурационный файл apache, как правило, находится в /usr/local/apache/conf/httpd.conf, а заставить сервер его перечитать можно с помощью проргаммы /usr/local/apache/bin/apachectl.

Основной целью дальнейших рекомендаций является определение и ограничение количества «апачей», выполняющихся в каждый момент времени (предполагается, что сам сервер у вас уже настроен и работоспособен). Дело в том, что (условно) на каждого посетителя сайта «тратится» процесс apache, и каждый такой процесс расходует память и процессорное время. Поэтому если у вас будет слишком много запущенных серверов, то оперативной памяти не хватит, а использование swap’а сильно замедляет работу сайта. С другой стороны, если запущенных серверов мало, то при заходе пользователя будет тратиться время на создание нового процесса, что опять же приводит к задержкам и расходу процессорного времени.

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

Максимальное количество «апачей», которые могут быть запущены одновременно определяется параметром maxclients. Это число должно чуть-чуть превышать максимальное количество посетителей, которые могут в какой-то момент времени оказаться у вас на сайте. В то же время, если желающих к вам попасть много, а ресурсов сервера для их обслуживания не хватает, то излишне высокое число запущенных серверов только затормозит всю работу. Поэтому желательно установить какое-то разумное ограничение, скажем 150 или 200.

Время, в течение которого сервер ждет откликов от клиента определяется параметром timeout. Обрывы связи иногда случаются и если браузер посетителя обратился к вашему серверу, не получил ответа и послал повторный запрос (скажем, пользователь нажал reload), то у вас запустятся два «апача», причем один из них будет просто висеть и в течение указанного времени ждать, когда посетитель подтвердит свое желание посмотреть страничку. По умолчанию этот параметр установлен в 300 секунд, но значительно более эффективным оказалось понизить его до 30.

Включение поддержки keepalive может заметно облегчить жизнь. Дело в том, что в «обычном» режиме для передачи каждого файла клиенту требуется установить соединение, и если у вас на страничке, например, есть 10 картинок, то придется устанавливать и разрывать 10 соединений для их передачи. А в режиме keepalive сервер после передачи файла соединение не разрывает и последующие запросы от этого клиента обрабатывает, используя уже установленное соединение. Таким образом экономится время на установку и разрыв соединений, причем для популярных сайтов эта разница может быть очень заметна!

Для keepalive соединений, точно также как и для обычных, надо установить timeout с помощью параметра keepalivetimeout. Так как сервер, установивший соединение с клиентом, недоступен для других клиентов пока соединение не будет разорвано, слишком большое значение может привести к куче серверов, ничего не делающих и просто ждущих не захочет ли их клиент скачать еще что-нибудь. Причем в это же время толпа новых посетителей может обнаружить, что ваш сайт не отвечает, так как достигнуто максимальное число разрешенных «апачей»… Наиболее практичным значением параметра keepalivetimeout является что-то между десятью и двадцатью секундами.

Как известно, долгое использование какой-то программы может привести к «утечкам памяти» или каких-то других ресурсов. Чтобы избежать таких проблем есть два параметра: maxkeepaliverequests и maxrequestsperchild. Первый параметр отвечает за принудительное «убиение» процесса после обработки указанного числа keepalive запросов, а второй — после указанного числа «обычных» запросов. В принципе, на абсолютном большинстве систем утечек памяти быть не должно и эти параметры можно сделать достаточно большими — по несколько тысяч. Но на всякий случай последите за поведением сервера — не исключено, что «утечки» обнаружатся в какой-то из библиотек, которые вы используете. Удобнее всего двигаться «снизу вверх» — сначала установить значения небольшими, скажем, 100 и 50, а потом их увеличивать, наблюдая за поведением сервера.

Ну и еще три параметра, регулирующие количество запущенных процессов: startservers, minspareservers и maxspareservers. Первый, при старте сервера запускает указанное число «апачей». Второй определяет минимальное число бездельничающих в ожидании нового клиента серверов, а третий — их максимальное число. В качестве первого шага можно поробовать, скажем, 25, 2 и 10, а дальше посмотреть на загруженность сайта. ..

Проверка результатов

Наиболее простым методом быстро оценить влияние сделанных вами изменений в настройках является команда top. В верхней части окна при ее работе выводится полезная статистическая информация, примерно такая:

last pid: 40772; load averages: 0.52, 0.50, 0.50 up 23+17:53:40 09:51:01
233 processes: 1 running, 231 sleeping, 1 zombie
cpu states: 21.2% user, 0.0% nice, 6.4% system, 0.4% interrupt, 72.0% idle
mem: 367m active, 239m inact, 123m wired, 48m cache, 112m buf, 107m free
swap: 1024m total, 13m used, 1011m free, 1% inuse
В первую очередь, надо обращать внимание на load averages — чем выше числа, тем хуже. В идеале, в нормальном состоянии они не должны превышать единицы. Следующее, к чему стоит присмотреться — это использование файла подкачки. Справа от строки swap могут появляться сообщения о записи в swap-файл (page out) или о чтении из него (page in). Чем чаще такие сообщения появляются — тем хуже. Дисковые операции уж очень медленные. .. Ну и, конечно, надо следить за количеством свободной памяти и загрузкой процессора. Впрочем, если вы сумеете добиться ситуации, когда swap-файл не будет использоваться, то, скорее всего, все остальное быстро придет в норму…

Статьи по теме




  • Описание:
    Определяет правила для механизма преобразований


    Синтаксис:
    RewriteRule ШаблонПодстановка


    Значение по умолчанию:
    None


    К…

    2012-10-29

  • 1. Почему русский Apache.
    Сегодня в русском Internet существует проблема различных кодировок. Не все пользователи могут воспользоваться, напри…

    2011-02-10

  • Установка языка серверных сценариев PHP.
    PHP представляет собой язык программирования, используемый на стороне web-сервера для динамическ…

    2011-02-10

  • По материалам статей: Stricty (http://www. opennet.ru/base/sec/ssl_freebsd.txt.html) Alexch (http://www.opennet.ru/base/net/apache_mod_ssl.txt.html) Недавно на OpenNET были опубликованы две статьи…

    2011-02-10

  • Каждому из нас хочется побыть «большим братом» и последить за своими посетителями. Это можно делать по-разному: поставить счетчик, наприм…

    2011-02-10

  • Несмотря, на то, что данные в публикуемой статье немного устарели, мы нашли полезным разместить ее на нашем сайте. Статья представляет об…

    2011-02-08

  • Разработка сайтов в связке Apache + PHP + XML + MySQL требует от себя установки вышеперечисленного софта. Но не всегда для этого надо ставить Linux. Де…

    2011-02-08

  • Все чаще обнаруживается, что некоторые начинающие сайтостроители, увлеченные скриптованием (на perl/cgi, php и т.д.) не знают, что такое chmod и ка. ..

    2011-02-08

  • Русский Apache
    Самый распространенный Web-сервер в мире — это Apache. По данным компании Netcraft (http://www.netcraft.com/Survey/) общее число Web-узлов, работающих…

    2011-02-08

  • Где найти и скачать Perl
    В настоящее время варианты PERL (так называемые «порты» (ports) ) существуют для многих разных машин и операционных сис…

    2011-02-08

  • Здесь описывается установка Perl 5.6.1.635 — учитывайте, что установка более новых версий может несколько отличаться от описываемой. Вам нео…

    2011-02-04

  • Директивы Apache для контроля доступа
    Контроль по IPЕсли вам нужно просто разрешить или блокировать доступ к какой-либо части сайта или вс…

    2011-02-04

  • Обзор
    В ходе данной инструкции мы подробно рассмотрим установку веб сервера Apache, PHP, Tomcat (для поддержки JSP) и их привязку для совместной . ..

    2011-02-04

  • Поставим PHP 5.1.2. Где его достать? Здрасте, естественно на PHP.net. Выбираем самое близкое к себе зеркало и качаем себе ZIP. Пока качает сделаем …

    2011-02-04

  • Как правило, для того, чтобы установить и настроить сервер Apache, а также подключить к работе PHP, базы данных MySQL и Perl, необходимо, во-первых …

    2011-02-04

PHP: Установка и настройка — Manual

Change language:
EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRomanianRussianSpanishTurkishOther

nestor dot martinez at etb dot net dot co

10 years ago


If you get a message like this:
"Php Startup: Unable to load dynamic library 'C:\php\ext\php_pgsql.dll"

1. In the Configuration File alter the order of the libraries "php_exif. dll" and "php_mbstring.dll", in such a way that is called first the library "php_mbstring.dll"

2. Copy all the libraries in the folder "bin" of your installation of PostgreSQL and paste them into the root folder of Windows

3. Uncomment the line "extension=php_pgsql.dll"
4. Now you should see on the page generated by "phpinfo()" section of PostgreSQL

emil at example dot com

11 years ago


Unable to load dynamic library 'C:\\php\\ext\\php_pgsql.dll' - The specified module could not be found.

another solution:

copy libpq.dll/all files from zip (if you have php from installer)

add to httpd.conf:

#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "c:/PHP/"
Loadfile "C:\php\php5ts.dll"
Loadfile "C:\php\libpq.dll"
LoadModule php5_module "c:/PHP/php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
AddHandler application/x-httpd-php . php
AddHandler application/x-httpd-php-source .phps

(in php.ini default: extension_dir ="c:\PHP\ext" )

if it doesn't work add c:\php (php path) to your windows path (and restart)

tested on php5.2.8 + apache2.2.3

kouber at php dot net

11 years ago


If you get this error on Windows:

Unable to load dynamic library 'C:/php/ext\\php_pgsql.dll' - The specified module could not be found.

Try downloading the PostgreSQL binaries-no-install archive from http://www.postgresql.org/ftp/binary/v8.3.5/win32/ (replace 8.3.5 with the latest stable version) and copy these DLLs to C:/WINDOWS/system32/ :

comerr32.dll
gssapi32.dll
k5sprt32.dll
krb5_32.dll
libeay32.dll
libiconv2.dll
libintl3.dll
libpq.dll
ssleay32.dll

some at domain dot name

11 years ago


Another windows xp solution for "Unable to load dynamic library 'php_pgsql. dll' - The specified module could not be found."

Add the path of the postgres binaries to the system search-path:

Right click on "My Computer", select "properties", "advanced"-tab, "Environment variables"-button, "System variables"-section, select "path" and click "Edit" and add the path to the postgres binaries at the end, in my case it was "C:\Program Files\PostgreSQL\8.4\bin" and then restart the computer (or at least restart the apache/php processes)

Please note that the system-path can have several values, each separated by a semicolon ";".

PHP: PostgreSQL — Manual

Change language:
EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRomanianRussianSpanishTurkishOther

  • Введение
  • Установка и настройка
  • Предопределенные константы
  • Примеры
  • Функции PostgreSQL
    • pg_affected_rows — Возвращает количество затронутых запросом записей (кортежей)
    • pg_cancel_query — Остановка асинхронного запроса.
    • pg_client_encoding — Получение кодировки клиента.
    • pg_close — Закрывает соединение с базой данных PostgreSQL
    • pg_connect_poll — Опросить статус попытки асихронного соединения PostgreSQL.
    • pg_connect — Открывает соединение с базой данных PostgreSQL
    • pg_connection_busy — Проверяет, занято ли соединение в данный момент.
    • pg_connection_reset — Сброс подключения (переподключение)
    • pg_connection_status — Определяет состояние подключения
    • pg_consume_input — Читает вводные данные на соединении
    • pg_convert — Преобразует значения ассоциативного массива в приемлемые для использования в SQL-запросах
    • pg_copy_from — Вставляет записи из массива в таблицу
    • pg_copy_to — Копирует данные из таблицы в массив
    • pg_dbname — Определяет имя базы данных
    • pg_delete — Удаляет записи
    • pg_end_copy — Синхронизирует с бэкендом PostgreSQL
    • pg_escape_bytea — Экранирует спецсимволы в строке для вставки в поле типа bytea
    • pg_escape_identifier — Экранирует идентификатор для вставки в текстовое поле
    • pg_escape_literal — Экранировать литерал при вставке в текстовое поле
    • pg_escape_string — Экранирование спецсимволов в строке запроса
    • pg_execute — Запускает выполнение ранее подготовленного параметризованного запроса и ждет результат
    • pg_fetch_all_columns — Выбирает все записи из одной колонки результата запроса и помещает их в массив
    • pg_fetch_all — Выбирает все данные из результата запроса и помещает их в массив
    • pg_fetch_array — Возвращает строку результата в виде массива
    • pg_fetch_assoc — Выбирает строку результата запроса и помещает данные в ассоциативный массив
    • pg_fetch_object — Выбирает строку результата запроса и возвращает данные в виде объекта
    • pg_fetch_result — Возвращает запись из результата запроса
    • pg_fetch_row — Выбирает строку результата запроса и помещает данные в массив
    • pg_field_is_null — Проверка поля на значение SQL NULL
    • pg_field_name — Возвращает наименование поля
    • pg_field_num — Возвращает порядковый номер именованного поля
    • pg_field_prtlen — Возвращает количество печатаемых символов
    • pg_field_size — Возвращает размер поля
    • pg_field_table — Возвращает наименование или идентификатор таблицы, содержащей заданное поле
    • pg_field_type_oid — Возвращает идентификатор типа заданного поля
    • pg_field_type — Возвращает имя типа заданного поля
    • pg_flush — Сбросить данные исходящего запроса на соединении
    • pg_free_result — Очистка результата запроса и освобождение памяти
    • pg_get_notify — Получение SQL NOTIFY сообщения
    • pg_get_pid — Получает ID процесса сервера БД
    • pg_get_result — Получение результата асинхронного запроса
    • pg_host — Возвращает имя хоста, соответствующего подключению
    • pg_insert — Заносит данные из массива в таблицу базы данных
    • pg_last_error — Получает сообщение о последней произошедшей ошибке на соединении с базой данных
    • pg_last_notice — Возвращает последнее уведомление от сервера PostgreSQL
    • pg_last_oid — Возвращает OID последней добавленной в базу строки
    • pg_lo_close — Закрывает большой объект
    • pg_lo_create — Создает большой объект
    • pg_lo_export — Вывод большого объекта в файл
    • pg_lo_import — Импорт большого объекта из файла
    • pg_lo_open — Открывает большой объект базы данных
    • pg_lo_read_all — Читает содержимое большого объекта и посылает напрямую в браузер
    • pg_lo_read — Читает данные большого объекта
    • pg_lo_seek — Перемещает внутренний указатель большого объекта
    • pg_lo_tell — Возвращает текущее положение внутреннего указателя большого объекта
    • pg_lo_truncate — Обрезает большой объект
    • pg_lo_unlink — Удаление большого объекта
    • pg_lo_write — Записывает данные в большой объект
    • pg_meta_data — Получение метаданных таблицы
    • pg_num_fields — Возвращает количество полей в выборке
    • pg_num_rows — Возвращает количество строк в выборке
    • pg_options — Получение параметров соединения с сервером баз данных
    • pg_parameter_status — Просмотр текущих значений параметров сервера
    • pg_pconnect — Открывает постоянное соединение с сервером PostgreSQL
    • pg_ping — Проверка соединения с базой данных
    • pg_port — Возвращает номер порта, соответствующий заданному соединению
    • pg_prepare — Посылает запрос на создание параметризованного SQL выражения
      и ждет его завершения
    • pg_put_line — Передает на PostgreSQL сервер строку с завершающим нулем
    • pg_query_params — Посылает параметризованный запрос на сервер, параметры передаются отдельно от текста SQL запроса
    • pg_query — Выполняет запрос
    • pg_result_error_field — Возвращает конкретное поле из отчета об ошибках
    • pg_result_error — Возвращает сообщение об ошибке, связанное с запросом результата
    • pg_result_seek — Смещает указатель на строку выборки в ресурсе результата запроса
    • pg_result_status — Возвращает состояние результата запроса
    • pg_select — Выбирает записи из базы данных
    • pg_send_execute — Запускает предварительно подготовленный SQL-запрос и
      передает ему параметры; не ожидает возвращаемого результата
    • pg_send_prepare — Посылает запрос на создание параметризованного SQL-выражения,
      не дожидаясь его завершения
    • pg_send_query_params — Посылает параметризованный запрос на сервер, не ожидает возвращаемого результата
    • pg_send_query — Отправляет асинхронный запрос
    • pg_set_client_encoding — Устанавливает клиентскую кодировку
    • pg_set_error_verbosity — Определяет объем текста сообщений, возвращаемых функциями
      pg_last_error и pg_result_error
    • pg_socket — Получить дескриптор только для чтения на сокет, лежащего в основе соединения PostgreSQL
    • pg_trace — Включает трассировку подключения PostgreSQL
    • pg_transaction_status — Возвращает текущее состояние транзакции на сервере
    • pg_tty — Возвращает имя терминала TTY, связанное с соединением
    • pg_unescape_bytea — Убирает экранирование двоичных данных типа bytea
    • pg_untrace — Отключает трассировку соединения с PostgreSQL
    • pg_update — Обновление данных в таблице
    • pg_version — Возвращает массив, содержащий версии клиента, протокола клиент-серверного
      взаимодействия и сервера (если доступно)

There are no user contributed notes for this page.

FreeBSD, Apache, PostgreSQL, PHP | Автомобильно-дорожный институт

Установка Drupal 6.x на FreeBSD (FreeBSD, Apache, PostgreSQL, PHP)

Apache
# cd /usr/ports/www/apache22 && make install clean
# echo 'apache22_enable="YES"' >> /etc/rc.conf
PHP
cd /usr/ports/php5 && make install clean

В появившемся диалоге ставим галочку напротив Build Apache module

Чтобы Apache понимал .php-файлы, добавляем в конфиг Apache /usr/local/etc/apache22/httpd.conf следующие строки:

index.php

в раздел DirectoryIndex и

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

в раздел mime_module.

Drupal
# cd /usr/ports/www/drupal6 && make install clean

В появившемся диалоге надо снять галочку с MySQL и поставить её на PostgreSQL
при установке Drupal попутно ставятся необходимые модули PHP (php5-extensions) и PostgreSQL-client.

Прописываем Drupal в httpd.conf в секцию alias_module:

Alias /drupal "/usr/local/www/drupal6"
<Directory "/usr/local/www/drupal6">
Options Indexes FollowSymlinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Для того, чтобы при настройке Drupal можно было включить поддержку ЧПУ, надо в файле /usr/local/www/drupal6/.htaccess раскомментировать строку

RewriteBase /drupal

Создаём файл настроек для Drupal с соответствующими правами доступа:

# cd /usr/local/www/drupal6/sites/default
# cp cp default.settings.php settings.php
# chown www:www settings.php
PostgreSQL

Устанавливаем и настраиваем PostgreSQL-server и веб-рулилку для него — phpPgAdmin:

# cd /usr/ports/databases/posgresql82-server && make install clean
# echo 'postgresql_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/postgresql initdb
# /usr/local/etc/rc.d/postgresql start
Тюнинг системы для PostgreSQL

В ядро рекомендуется добавить:

options         SYSVSHM
options         SYSVSEM
options         SYSVMSG
options         SHMMAXPGS=65536
options         SEMMNI=40
options         SEMMNS=240
options         SEMUME=40
options         SEMMNU=120

Для установки переменных окружения постгреса и устаноки ограничений редактируем /etc/login. conf:

postgres:\
:lang=en_US.UTF-8:\
:setenv=LC_COLLATE=C:\
:tc=default:

Далее выполняем команды:

# cap_mkdb /etc/login.conf
# echo 'postgresql_class="postgres"' >> /etc/rc.conf

Создаём базу данных и пользователя БД для Drupal:

# createdb -U pgsql -W drupal
# createuser -U pgsql -P -e drupal
# createlang -U pgsql -W plpgsql drupal
phpPgAdmin
# cd /usr/ports/databases/phppgadmin && make install clean

Прописываем phpPgAdmin в httpd.conf в секцию alias_module:

Alias /pgadmin "/usr/local/www/phpPgAdmin"
<Directory "/usr/local/www/drupal6">
Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Начальное конфигурирование Drupal

После выполнеия всех вышеперечисленных шагов остаётся открыть в веб-браузере страницу http://your.address/drupal и указать необходимые настройки и начать работать с Drupal! =)

Источник

Установка Phppgadmin в Ubuntu 18. 04

PostgreSQL или Postgres — это мощная и высокопроиводительная объектно-реляционная система управления базами данных с открытым исходным кодом. Она отлично подходит для больших баз данных и поддерживает много дополнительных функций. Эта база данных доступна для большинства операционных систем, в том числе для Linux, FreeBSD, Solaris и Windows.

Для управления базой данных в графическом интерфейсе мы привыкли использовать программу phpmyadmin. Аналогичная программа есть и для PostgreSQL и называется она Phppgadmin. С помощью неё намного проще создавать базы данных, таблицы и настраивать роли. В этой статье мы рассмотрим как выполняется установка phpPgAdmin Ubuntu 18.04.

Установка Phppgadmin в Ubuntu 18.04

Я предполагаю, что на вашем компьютере уже установлен веб-сервер Apache, интерпретатор PHP и Postgresql. Про установку набора программ LAMP вы можете прочитать в отдельной статье. Для установки phppgadmin выполните:

sudo apt install phppgadmin

Если у вас ещё не установлен пароль для пользователя postgress, необходимо его установить:

su - postgres

psql

\password postgres

А затем введите выбранный пароль. Далее можно выйти из командной оболочки:

\quit

А затем вернуться к вашему обычному пользователю командой exit. Далее необходимо настроить Apache. Откройте файл /etc/sites-available/phppgadmin.conf и убедитесь, что значение директивы Require — all granted, не local, иначе к веб-интерфейсу можно будет получить доступ только локально:

sudo vi /etc/conf-available/phppgadmin.conf

Require all granted

По умолчанию PhpPgAdmin вход от имени суперпользователя. Такое поведение тоже можно отключить. Для этого откройте /etc/phppgadmin/config.inc.php и установите значение для этой строчки в false:

sudo vi /etc/phppgadmin/config.inc.php

$conf['extra_login_security'] = false;

Далее можно открыть phppgadmin открыв в браузере путь http://localhost/phppgmyadmin. Вместо localhost можно использовать ваш ip адрес, если программа установлена на другой сервер:

Выберите сервер PostgreSQL и попробуйте авторизоваться. Введите имя пользователя postgres и ранее заданный пароль.

Потом программа откроет интерфейс панели phpPgAdmin:

Выводы

Теперь вы знаете как выполняется установка phppgadmin в Ubuntu 18.04. Этот веб-интерфейс не намного сложнее установить, чем тот же PhpMyAdmin, а возможности его позволяет намного упростить работу с Postgresql.

Обсуждение: [Re] Need help with postgresql/apache/php optimisation : Компания Postgres Professional

Thx for your quick answer too :)

Richard Huxton wrote:
>
> On Wednesday 18 February 2004 20:18, Froggy / Froggy Corp. wrote:
> > Hello,
> >
> >       I asked one time for more "benchmark" soft to know where is the cpu
> > average, and read the post about optimising the postgresql.conf (and use
> > them), but i allways get a load > 1 on fire time (dunno the right name,
> > "coup de feu" in french (10h00 -> 14h00, 18h00 -> 21h00).
>
> This is the period when you get the most hits, yes?

yes

> > With different software, i dont see anything wrong (or i dont understand
> > how to use them), the problem is the memory which make some nice road
> > around 12Mo Free and 3Mo Free, but the swap dont really grow up (but
> > linux make a lot of cache).
>
> Not sure I understand you fully, but if swap isn't active you should be OK.
> See below for a good test.

Swap is active, but the size don't change a lot. (12Mb common time,
maybe 50Mb on rush time).

> There are three things to look at while testing this:
> 1. The output of "vmstat 1" - this will show memory usage, swap activity disk
> blocks in/out, cpu usage etc.
> 2. The output from "top", press "M" to sort by memory usage - that way we can
> see how much memory is being used.
> 3. How many requests are you processing at the same time?

I will use vmstat 1 tomorrow (22:24 here, so too late)

Around 4/5 postgresql thread and around 20 apache thread with top.
With mod-status from apache, i get same information, 20 requests in
process, but only some in activity.

> > If someone could help me, i need to put a new feature which will add
> > more than 2000 hit per day and im afraid about the life of the server
>
> Only 5000 hits per day? I'm sure we can get that working.

I hope :D.

Another question, i put on postgresql.conf a limited number of
postgresql max_connections, and use permanent link beetween apache and
postgresql. The problem is that a lot of apache thread is used for
sending data (gfx). Is there a way to say that some thread are only here
for php process ?

thx in advance,
regards,

Как установить Configure — Apache, Php, Postgres в Linux.

Как установить, настроить Apache, Php, Postgresql в Linux.

Summary — Установка, настройка Apache, Php и Postgres.
Опубликовано — 2 апреля 2006 г.
Последнее обновление — 2 августа 2009 г.
Автор — Sumedh
Примечание. В этом руководстве предполагается, что вы знаете, как скомпилировать и установить программу из исходного кода.


Загрузите и установите Postgres.

1) Переключитесь на пользователя root.
2) Загрузите исходный код Postgresql с http: // www.postgresql.org/download
3) Распакуйте Postgresql в любую папку по вашему выбору.

./configure
сделать
сделать установить

4) Создайте нового пользователя с именем postgres.

mkdir / usr / local / pgsql / data
chown postgres / usr / local / pgsql / data
su — postgres
/ usr / local / pgsql / bin / initdb -D / usr / local / pgsql / data
/ usr / local / pgsql / bin / postmaster -D / usr / local / pgsql / data
/ usr / local / pgsql / bin / createdb test
/ usr / local / pgsql / bin / psql test

Скачайте и установите Apache.

5) Загрузите исходный код Apache с http://httpd.apache.org
6) Распакуйте Apache в любую папку по вашему выбору.
7) Настройте и установите Apache.

./configure —prefix = / usr / local / apache —enable-so —enable-rewrite
make
make install

Скачайте и установите Php.

8) Загрузите исходный код Php с http://www.php.net/downloads.php
9) Распакуйте Php в любую папку по вашему выбору.
10) Настроить и установить Php.

./configure —with-apxs2 = / usr / local / apache / bin / apxs —with-pgsql

Примечание — не забывайте —with-pgsql

Настроить Php.ini.

11) Скопируйте php.ini или php.ini-dist из папки, в которую вы извлекли php, в / usr / local / lib

12) Перейдите в папку / usr / local / lib и откройте файл php.ini-dist в любой простой текстовый редактор, например emacs.
13) Найдите в файле ‘extension = php_pgsql.dll’ и удалите ‘; ‘перед этой строкой.

Настроить Apache.

14) Откройте файл httpd.conf в папке / usr / local / apache / conf в любом простом текстовом редакторе.
15) Убедитесь, что в списке LoadModule есть следующая строка, если ее нет, добавьте ее.

LoadModule модули php5_module / libphp5.so

16) Найдите раздел приложения AddType и добавьте или раскомментируйте следующие строки.

Приложение AddType / x-httpd-php .php .php3 .phtml
Приложение AddType / x-httpd-php-source .phps

17) В списке «Пользователь / группа» отредактируйте или добавьте эти строки.

Пользователь postgres
Групповой демон

Протестируйте Apache и Php.

18) Запустите Apache, вам понадобится доступ sudo.

/ usr / локальный / apache / bin / apachectl начало

19) Перейдите в / usr / local / apache / htdocs.Это папка по умолчанию, в которую Apache помещает html-файлы.
20) Создайте новый файл php с именем index.php
21) Скопируйте и вставьте следующие строки в этот файл.
22) После сохранения откройте http: //localhost/index.php в Firefox.

Не говорите мне, что вы не используете firefox 🙂

Если вы видите страницу, похожую на ту, что приведена ниже, значит, вы правильно установили php.
Прокрутите вниз, пока не увидите pgsql. Поздравляем, вы настроили php с помощью postgres.

Щелкните миниатюру, чтобы увеличить изображение

Примечание. Если вы не видите страницу с информацией о php, попробуйте перезапустить apache.

Авторские права © 2002-07 Sumedh K

Доступ к PostgreSQL REST API (OData)

Функции

Образ Docker в один клик

Докер-образ сервера Hybrid Data Pipeline Server доступен для загрузки, чтобы упростить установку и оценку нашего предложения. Краткое руководство

Облегченный шлюз данных

Безопасный доступ к данным бэк-офиса за брандмауэром с помощью нашего запатентованного локального соединителя, который можно дополнительно развернуть в демилитаризованной зоне или за корпоративным брандмауэром.Получите надежный гибридный доступ к данным, не требуя серьезной настройки сети / брандмауэра, например настройки VPN или SSH-туннелирования.

Горизонтальное масштабирование

Hybrid Data Pipeline можно развернуть в облачной и корпоративной среде на нескольких узлах за балансировщиком нагрузки. Продукт спроектирован так, чтобы легко интегрироваться как с балансировщиком нагрузки AWS, так и с балансировщиком нагрузки Azure.

Универсальное подключение

Получите возможность подключения в реальном времени к новейшим источникам данных SaaS, SQL, Big Data и NoSQL, таким как Salesforce, Apache Hive, Amazon Redshift, Oracle, SQL Server, IBM Db2, Eloqua, Google Analytics и другие.

См. Скрыть поддерживаемые источники данных

Большие данные

Улей Amazon EMR

Apache Hadoop (Apache Hive)

Улей Cloudera CDH

Hortonworks

IBM BigInsights Hive

Улей MapR

Улей Pivotal HD

Отношения и аналитика

Amazon RedShift

IBM DB2

Microsoft SQL Server

MySQL предприятие

Оракул

Пивотал Гринплум

PostgreSQL

Progress® OpenEdge®

SAP Sybase

SaaS / облако

FinancialForce

Force.com Приложения

Google Analytics

Microsoft Dynamics CRM

База данных SQL Microsoft Azure

Оракул Элоква

Oracle Sales Cloud

Oracle Service Cloud

Progress® Rollbase®

Salesforce.com

Salesforce1 Lightning

ServiceMAX

Сахар CRM

Veeva CRM

Поддержка стандартного драйвера JDBC (бета)

Чтобы не отставать от спроса на новые источники данных, мы ввели универсальный драйвер JDBC.Эта бета-функция позволяет вам подключить собственный драйвер JDBC к Hybrid Data Pipeline. Если вы хотите включить эту бета-функцию для своей организации, свяжитесь с нами.

Безопасность

Все важные для клиента элементы данных (включая сохраненные удаленные учетные данные или пары баз данных) защищены шифрованием как при хранении (AES-256), так и при передаче. Наши алгоритмы шифрования можно сделать совместимыми с FIPS-140 с помощью режима соответствия FIPS (использует Bouncy Castle в качестве поставщика безопасности).Прочтите наш документ о безопасности.

OAuth 2.0 и другие системы аутентификации

Hybrid Data Pipeline по своей сути поддерживает OAuth 2.0 и базовую аутентификацию. Он также предлагает простой способ поддержки других внешних механизмов аутентификации, чтобы предприятия могли проверять пользователей по своим внутренним системам аутентификации, которые могут использовать систему LDAP, Windows (Kerberos), SAML / ADFS или любую другую службу аутентификации. Вы даже можете сгруппировать несколько пользователей внешней аутентификации для сопоставления с одним пользователем гибридного конвейера данных, чтобы получить доступ к источникам данных.

Дросселирование

Limits API позволяет администраторам устанавливать ограничения на количество строк, возвращаемых для запросов ODBC, JDBC и OData. Ошибка возвращается, если приложение извлекает строки, превышающие указанный предел.

Поддержка OData 4 и OData 2

Вы можете развернуть OData 4 или OData 2 или обе конечные точки на любом источнике данных. Progress DataDirect является членом технического комитета OData, и мы следим за обновлениями спецификаций OData.

настроить php с postgresql и apache

Привет,
Я пытаюсь настроить php4 для работы вместе с postgresql и apache.Postgres и apache уже установлены и запущены, но при выполнении я получаю сообщение об ошибке:
host84: ~ / php-4.4.9 #. / configure —with-apache = / usr / local / apache —with-postgresql = / usr / local / pgsql

загрузка кеша ./config.cache
проверка egrep. .. (cached) grep -E
проверка на sed, который не усекает вывод … (cached) / bin / sed
expr: синтаксическая ошибка
./configure: test: =: ожидается унарный оператор
expr: синтаксическая ошибка
./configure: test: =: ожидается унарный оператор
expr: синтаксическая ошибка
./ configure: test: =: ожидается унарный оператор
expr: синтаксическая ошибка
./configure: test: =: ожидается унарный оператор
expr: синтаксическая ошибка
./configure: test: =: ожидается унарный оператор
, проверяющий тип хост-системы. .. i686-pc-linux-gnu
проверка наличия gcc … (кешируется) gcc
проверка работы компилятора C (gcc) … да
проверка того, является ли компилятор C (gcc) кросс-компилятором .. .нет
проверка, используем ли мы GNU C … (кешируется) да
проверка, принимает ли gcc -g… (кешируется) да
проверяет, понимают ли gcc и cc -c и -o вместе … (кешируется) да
проверяет, как запускать препроцессор C … (кэшировать) gcc -E
проверка для AIX … нет
проверка, поддерживает ли компилятор -R … (кэшируется) нет
проверка, поддерживает ли компилятор -Wl, -rpath, … (кешируется) да
проверка на re2c … (кешируется) exit 0;
проверка работы ln -s … (кешируется) да
проверка gawk … (кешируется) gawk
проверка bison … нет
проверка byacc …нет
configure: предупреждение: Вам понадобится bison, если вы хотите регенерировать синтаксические анализаторы PHP.
проверка на гибкость … (кэширование) гибкость
проверка на yywrap в -lfl … (кэширование) да
проверка на корень выходного файла lex … (кеширование) lex.yy
проверка на то, является ли yytext указателем … (кешируется) да
проверка работы const … (кешируется) да
проверка гибкой версии … 2.5.4 (нормально)
проверка, является ли порядок байтов bigendian … (кешируется) нет
проверка, принудительно ли не- Код PIC в общих модулях… да
проверка pthreads_cflags … (cached) -pthread
проверка pthreads_lib … (cached)

Настройка модулей SAPI

проверка поддержки AOLserver … нет
проверка поддержки модуля Apache 1.x через DSO через APXS … нет
проверки поддержки модуля Apache 1.x … нет
configure: ошибка: неверный каталог Apache — невозможно найти httpd.h в / usr / local / apache

Я уверен, что путь для apache в порядке. Буду признателен за любой совет. Спасибо.

PHP PDO — Подключение к PostgreSQL

Резюме : в этом руководстве показано, как подключиться к серверу базы данных PostgreSQL с помощью PHP PDO.

Предварительные требования

Перед подключением к серверу базы данных PostgreSQL с помощью PHP PDO вам необходимо иметь:

  • Сервер базы данных PostgreSQL, образец базы данных и учетную запись с именем пользователя и паролем, которая может получить доступ к базе данных.
  • PHP PDO Драйвер PostgreSQL включен на вашем веб-сервере.

Например, у нас есть локальный сервер базы данных PostgreSQL с образцом базы данных pagila и учетной записью с именем пользователя postgres и паролем postgres , которые могут получить доступ к базе данных pagila .Мы можем создать новый файл конфигурации базы данных с именем dbconfig.php и поместить эти параметры базы данных в файл, как показано ниже:

$ host = ‘localhost’;

$ db = ‘pagila’;

$ username = ‘postgres’;

$ пароль = ‘postgres’;

Позже мы будем использовать файл конфигурации dbconfig.php в других файлах сценария, которым необходим доступ к этим параметрам конфигурации, с помощью функции require_once () .

Чтобы проверить, включен ли драйвер PDO PostgreSQL, откройте файл php.ini и проверьте, не прокомментирована ли следующая строка. Если это не так, вы можете удалить точку с запятой (; ) перед записью.

extension = php_pdo_pgsql.dll

Имя источника данных PostgreSQL

Имя источника данных или DSN передает параметры базы данных, которые позволяют подключаться к системе базы данных. PDO определяет разные DSN для разных систем баз данных.Имя источника данных PostgreSQL состоит из следующих параметров:

  • Префикс DNS: pgsql:
  • хост : имя хоста сервера базы данных, на котором находится база данных PostgreSQL.
  • порт : порт, на котором работает база данных PostgreSQL, порт по умолчанию — 5432.
  • dbname : имя базы данных.
  • пользователь : имя пользователя, который подключается к базе данных dbname .Вы можете указать имя пользователя либо в DSN, либо в конструкторе класса PDO.
  • пароль : пароль имени пользователя. Вы можете указать пароль либо в DSN, либо в конструкторе PDO.

Обратите внимание, что PDO игнорирует имя пользователя и пароль в конструкторе PDO, если вы помещаете их в имя источника данных (DSN). Ниже приведен DSN, который позволяет нам подключаться к базе данных pagila на локальном сервере базы данных PostgreSQL.

pgsql: host = localhost; port = 5432; dbname = pagila; user = postgres; password = postgres

Подключение к PostgreSQL

Следующий код показывает, как подключиться к базе данных pagila Сервер базы данных PostgreSQL:

1

2

3

4

5

6

7

8

9

10

11

0009 11

0009

15

16

17

18

require_once ‘dbconfig.php ‘;

$ dsn = «pgsql: host = $ host; port = 5432; dbname = $ db; user = $ username; password = $ password»;

try {

// создать соединение с базой данных PostgreSQL

$ conn = new PDO ($ dsn);

// отображаем сообщение при успешном подключении к PostgreSQL

if ($ conn) {

echo «Подключено к базе данных $ db успешно!»;

}

} catch (PDOException $ e) {

// сообщение об ошибке

echo $ e-> getMessage ();

}

Как работает скрипт.

  • Чтобы подключиться к базе данных PostgreSQL, вам просто нужно создать новый объект connection , который является экземпляром класса PDO. Когда вы создаете новый объект подключения, вы передаете DSN в качестве аргумента его параметру.
  • Оператор try catch используется для перехвата любого исключения, которое может возникнуть при подключении к базе данных PostgreSQL. В блоке catch мы отображаем сообщение об ошибке, если с подключением что-то не так.

Если у вас все настроено правильно, вы увидите следующее сообщение:

Подключено к базе данных pagila успешно!

Если вы используете сервер WAMP, после включения драйвера POD PostgreSQL он все еще не работает, и вы получаете следующее сообщение об ошибке:

Вы можете ввести следующую строку:

LoadFile » c: / wamp / bin / php / php5.4.3 / libpq.dll «

В конце файла httpd.conf в папке C: \ wamp \ bin \ apache \ apache2.2.22 \ conf .

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

  • Было ли это руководство полезным?
  • Да Нет

LAPP apibrėžimas: Linux, Apache, PostgreSQL, PHP / Python / Perl

Ką reiškia LAPP? LAPP использует Linux, Apache, PostgreSQL, PHP / Python / Perl.Вы можете использовать английскую версию и использовать Linux, Apache, PostgreSQL, PHP / Python / Perl английскую версию, слинките эту версию или используйте Linux, Apache, PostgreSQL, PHP / Python / Perl на английском языке. Atminkite, kad LAPP santrumpa yra plačiai naudojamas pramonės šakų, pavyzdžiui, bankininkystės, skaičiavimo, švietimo, finansų, vyriausybini ir sveikatos. Будьте LAPP, Linux, Apache, PostgreSQL, PHP / Python / Perl еще больше, чем нужно.

LAPP = Linux, Apache, PostgreSQL, PHP / Python / Perl

.
Ieškote bendro LAPP apibrėžimo? LAPP использует Linux, Apache, PostgreSQL, PHP / Python / Perl.Mes didžiuojamės, kad sąrašas akronimas LAPP didžiausių duomenų bazėje santrumpos ir akronimų. Это означает, что вы можете использовать LAPP на английском языке: Linux, Apache, PostgreSQL, PHP / Python / Perl. Jūs galite atsisiųsti vaizdo failą spausdinti arba siųsti jį savo draugams elektroniniu paštu, Facebook, Twitter, arba TikTok.

Reikšmė LAPP anglų kalba

Кайп минета пирмиау, LAPP научится работать с текстовыми сообщениями Linux, Apache, PostgreSQL, PHP / Python / Perl.Это означает, что вы используете LAPP и используете Linux, Apache, PostgreSQL, PHP / Python / Perl. Используйте dėmes, kad Linux, Apache, PostgreSQL, PHP / Python / Perl nėra vienintelė prasmė LAPP. Ten gali būti daugiau nei vienas apibrėžimas LAPP, todėl patikrinkite, ar tai mūsų žodyne visoms LAPP reikšmių po vieną.

Английский язык: Linux, Apache, PostgreSQL, PHP / Python / Perl

Kitos LAPP reikšmės

Будьте Linux, Apache, PostgreSQL, PHP / Python / Perl, LAPP turi kitų reikšmių.Jie yra išvardyti kairėje apačioje. Prašome slinkite žemyn ir spustelėkite, kad pamatytumėte kiekvieną iš j. Visoms LAPP reikšmėmis spustelėkite «daugiau». Вы можете использовать английскую версию и использовать Linux, Apache, PostgreSQL, PHP / Python / Perl apibrėžimus kitomis kalbomis, spustelėkite kalbos meniu dešinėje apačioje. Используйте Linux, Apache, PostgreSQL, PHP / Python / Perl reikšmes daugeliu kitų kalb, pavyzdžiui, arabų, danų, olandų, hindi, japonija, korėjieči, graikų, italų, vietnamieči ir kt.

Добавить комментарий

Ваш адрес email не будет опубликован.