Php сервис определения минимально необходимой версии php для скриптов


Содержание

Определяем время работы скрипта PHP

Доброго времени суток, коллеги! ��

Сегодня я решил затронуть такую тему, как время выполнения скрипта PHP и его определение.

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

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

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

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

Сперва мы рассмотрим сам алгоритм определения времени исполнения PHP скрипта, а затем я приведу код, с помощью которого он будет реализовываться.

Время выполнения PHP скрипта — алгоритм определения

Порядок наших действий будет предельно прост:

  1. определяем текущее серверное время в PHP коде перед выполнением действий, прописанных в скрипте;
  2. после того, как скрипт выполнится, снова узнаём серверное время;
  3. вычисляем средствами PHP разницу времени между завершением выполнения скрипта и его запуском.

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

Время работы PHP скрипта — реализация алгоритма

Для вывода текущего времени в PHP коде я решил воспользоваться стандартной PHP функцией microtime(), которая возвращает текущую метку времени в Unix формате с микросекундами.

Зачем такая точность?

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

Ну, и плюс, учёт микросекунд при вычислениях влияет на точность калькуляций в положительную сторону.

Для демонстрации своих теоретических повествований я написал простенький скриптик, который вычисляет время прогона пустого цикла с 30 000 000 итераций (решил взять побольше для наглядности):

Как сказано в официальной документации PHP, по умолчанию microtime() возвращает строку в формате «msec sec», где sec — количество секунд с начала эпохи Unix (1 января 1970 0:00:00 GMT), а msec — это количество микросекунд, прошедших после sec.

Функция PHP microtime() имеет всего один параметр get_as_float, при указании которому значения true можно получить текущее время PHP в секундах, прошедших с начала эпохи Unix с точностью до микросекунд.

Поскольку мне нужно было именно текущее время, а не количество секунд с начала эпохи Unix, то я воспользовался данным параметром, что можно видеть в моём коде.

В итоге, с помощью функции echo(), на экран вывелось следующее сообщение: Скрипт был выполнен за 1.3156361579895 секунд.

Чтобы определить, что данная методика работает верно, я решил задать фиксированное время выполнения скрипта с помощью функции sleep(), которая делает задержку выполнения скрипта на указанное количество секунд.

В итоге, следующая конструкция вернула сообщение Скрипт был выполнен за 2.0000510215759 секунд:

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

Если они будут всё-таки раздражать вас или вашего заказчика, то можете воспользоваться хаком в виде банального округления до сотых или тысячных долей с помощью PHP функции round(), задействовав её следующим образом:

Результатом выполнения данного куска кода для вышеприведённого примера станет значение в кругленькие 2 секунды, что устроит самых искушённых перфекционистов ��

На этом сегодняшняя информация о том, как можно определить время выполнения скрипта PHP, подходит к концу.

Пишите свои отзывы в комментариях и задавайте интересующие вас вопросы в пабликах проекта в социальных сетях.

Всем удачи и до новых встреч! ��

P.S.: если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.

Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angular и другими технологиями web-разработки.

Опыт разработки проектов различного уровня: лендинги, корпоративные сайты, Интернет-магазины, CRM, порталы. В том числе поддержка и разработка HighLoad проектов. Присылайте ваши заявки на email cccpblogcom@gmail.com.

И с друзьями не забудьте поделиться ��

Обновление php до последней версии 2 важные причины

Автор: Эдуард Бунаков · Опубликовано 10 июля 2020 · Обновлено 9 октября 2020

Обновление php до последней версии прежде всего, обеспечит более быструю и надежную работу сайта, оптимизацию страниц и улучшенную структуру по мнению поисковиков. Но не у всех получается правильно осуществить данное обновление.

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

Когда переходить на последнюю версию php

О необходимости обновления версии php можно узнать как самостоятельно (проверить скорость загрузки ), так и получив уведомление от своего хостинг-провайдера. Кроме того, при использовании готовых движков, можно включить режим отладки системы и при установке расширений у которых используется старая версия php, система сама выдаст предупреждение.

Так же проверить код сайта на ошибки можно валидатором ( https://validator.w3.org/ ). Еще один способ несовместимости — это установка расширений для своего движка. Особенно это касается новых или обновленных расширений (если создан на php). В них всегда все новое, в том числе и сам php-код.

Причины для обновления php

Необходимо отметить 2 самые важные причины — это безопасность и работоспособность всего сайта. Еще совсем недавно все администраторы знали о прекращении обновления php версии 5.2, а сейчас, по прошествии всего чуть меньше двух лет, язык программирования php уже доступен в 7 версии.

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

Что касается cms-систем, то joomla например, уже имеет последнюю версию php после того как вышла версия 3.7 этого движка. Конечно и популярный блоговый движок wordpress тоже может работать на последней версии php, нужно только правильно осуществить этот переход.

Сам движок может и будет работать без проблем, но работоспособность напрямую зависит от настроек параметров вашего хостинга. Все эти настройки необходимо настроить самостоятельно, либо обратиться в службу поддержки хостинга.

В связи с этим, краткая рекомендация.
Если вы не дождались ответа от своего хостинг-провайдера, меняйте не задумываясь такой хостинг. Лично я пользуюсь услугами хостинга beget.

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

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

Как узнать версию php


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

Способов проверки достаточно много, самыми простыми являются непосредственно проверка версии php в аккаунте хостинга и второй — создание файла проверки версии php.

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

Для этого создаем файл в любом редакторе со следующим содержимым:
и сохраняем под тем же именем phpinfo.php

Затем данных файл нужно закачать в корень своего сайта и обратиться к нему в адресной строке своего браузера (http://ваш_домен/phpinfo.php).

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

Обновление php на сервере для wordpress

Все популярные cms-системы, в том числе и wordpress, часто обновляются и имеют последнюю версию языка программирования и частенько новый функционал. Связано это прежде всего с безопасностью и с обновлениями программного кода.

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

А вот настроить совместимость версий php хостинга и например wordpress, это уже дело администратора сайта. Собственно ради этого и написана данная статья.

Любой администратор знает что обновление php на сервере делается из контрольной панели хостинга двумя кликами мыши. Выбрал необходимую версию php и нажал кнопку «сохранить».

Ну а дальше наблюдаем недоступность своего проекта.

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

Совсем не важно знать структура wordpress или другого движка, а достаточно понимать что все изменения происходят именно по этой причине.

А раз так, то нужно все это дело проверить. Но расширений может быть не один десяток (плагины для wordpress) и проверить такое количество на совместимость, просто не реально!

Проверка расширений на совместимость с php 7

Как ни странно, но для wordpress например, можно установить еще один плагин Compatibility php , который и поможет узнать какие установленные плагины не дают нормально работать системе.

Это отличный и простой способ проверить совместимость вашего сайта с PHP 7. Причем проверить можно практически все, включая тему для wordpress.

Установка стандартная и после этого в панели инструментов появится дополнительная вкладка PHP Compatibility.

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

Чтобы внимательно рассмотреть, нажмите мышкой на изображение.

На скриншоте видно, что после нажатия на кнопку «Scan site again», плагин выдал всю информацию по установленным расширения. Наглядно виден разноцветный результат проверки.

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

Таким образом, из установленных 23-х плагинов на блоге, необходимо отключить или удалить всего 3. Тем самым можно обеспечить себе уверенность в том, что обновление php пройдет без проблем.

Если не жалко времени, можно обойтись ручным способом удалить или отключить все плагины, а после настройки сервера на php 7, постепенно включать их по одному и проверять работу.

В этом случае нужно либо помнить все настройки, либо иметь файл с сохраненными настройками.

Илон Маск рекомендует:  TextFile - Тип Delphi

Обновление версии php joomla

Что касается cms-joomla, то наверняка уже понятно, что процедура обновления версии php примерно выглядит одинаково. Вариантов достаточно много, но самое главное, что уже вся система работает на последней версии php после того, как вышла joomla 3.7.

При этом в панели администратора появится сообщение о несовместимости php не зависимо от того, на каком сервере работает система, локальном или удаленном.

Что касается установленных расширений, то зачастую в joomla не бывает больше 5-7 расширений которые необходимо обновить.

И информацию об обновлении всегда можно увидеть в админ-панели, но если некоторые расширения долго не обновляются, стоит на это обратить пристальное внимание.

phpversion

(PHP 4, PHP 5, PHP 7)

phpversion — Получает текущую версию PHP

Описание

Возвращает строку с номером версии текущего PHP-интерпретатора или расширения.

Список параметров

Необязательное имя расширения.

Возвращаемые значения

Если задан аргумент extension , phpversion() вернет версию этого расширения или FALSE , если информации о версии нет или расширение в данный момент не включено.

Примеры

Пример #1 Пример использования phpversion()

// Выводит строку типа ‘Текущая версия PHP: 4.1.1’
echo ‘Текущая версия PHP: ‘ . phpversion ();

// Выводит строку типа ‘2.0’ или ничего, если расширение не включено
echo phpversion ( ‘tidy’ );
?>

Пример #2 Пример использования PHP_VERSION_ID

// PHP_VERSION_ID доступна в версиях PHP 5.2.7 и выше. Если
// наша версия ниже, можно ее сэмулировать
if (! defined ( ‘PHP_VERSION_ID’ )) <
$version = explode ( ‘.’ , PHP_VERSION );

define ( ‘PHP_VERSION_ID’ , ( $version [ 0 ] * 10000 + $version [ 1 ] * 100 + $version [ 2 ]));
>

// PHP_VERSION_ID определена как число. Чем больше число, тем новее
// PHP. Эта константа задается по той же схеме, что приведена выше:
//
// $version_ >//
// Теперь с PHP_VERSION_ID можно проверять, какой функционал есть в
// текущей версии PHP. Не обязательно пользоваться version_compare()
// каждый раз, когда требуется проверить, поддерживает ли PHP нужную
// нам функцию.
//
// Например, мы можем задать значения констант PHP_VERSION_*,
// которые недоступны в версиях ранее 5.2.7

if ( PHP_VERSION_ID 50207 ) <
define ( ‘PHP_MAJOR_VERSION’ , $version [ 0 ]);
define ( ‘PHP_MINOR_VERSION’ , $version [ 1 ]);
define ( ‘PHP_RELEASE_VERSION’ , $version [ 2 ]);

Примечания


Эта информация также доступна через предопределенную константу PHP_VERSION . Более детальную информацию можно получить с помощью констант PHP_VERSION_* .

Смотрите также

  • Константы PHP_VERSION
  • version_compare() — Сравнивает две «стандартизованные» строки с номером версии PHP
  • phpinfo() — Выводит информацию о текущей конфигурации PHP
  • phpcredits() — Выводит список разработчиков PHP
  • php_logo_guid() — Получение guid логотипа
  • zend_version() — Получает версию движка Zend

Выбор версии PHP на хостинге

Характеристики доступных на хостинге версий php

  • для php версии 4: http://vh1.sweb.ru/phpinfo.php4
  • для php версии 5.2: http://vh1.sweb.ru/phpinfo.php52
  • для php версии 5.3: http://vh1.sweb.ru/phpinfo.php53
  • для php версии 5.4: http://vh1.sweb.ru/phpinfo.php54
  • для php версии 5.5: http://vh1.sweb.ru/phpinfo.php55
  • для php версии 5.6: http://vh1.sweb.ru/phpinfo.php56
  • для php версии 7: http://vh1.sweb.ru/phpinfo.php7
  • для php версии 7.1: http://vh1.sweb.ru/phpinfo.php71
  • для php версии 7.2: http://vh1.sweb.ru/phpinfo.php72
  • для php версии 7.3: http://vh1.sweb.ru/phpinfo.php73

Изменение версии PHP

По умолчанию предоставляется PHP 7.1. Изменить версию PHP возможно в разделе «Настройка сайта» панели управления аккаунтом. Для этого необходимо выбрать домен или поддомен, для которого требуется произвести изменения, затем на вкладке «Общие» настроек сайта выбрать нужную версию PHP и справа от выбранной версии нажать кнопку «сохранить» (в виде дискеты). Изменения вступают в силу в течение нескольких минут.

Не нашли ответ на свой вопрос? Позвоните нашим специалистам по бесплатному телефону 8-800-100-16-15.

Работа с PHP-скриптами в командной строке

По умолчанию php скрипты запускаются под «системной» сборкой php (5.3), например:

Соответственно, команда php -v покажет информацию о «системной» сборке php, а не той, что активирована в панели управления хостингом:

Сборки php, которые вам доступны в панели управления хостингом, расположены в /opt/php:

Как запустить скрипт под определённой версий php?

Обратите внимание: скрипты можно запускать и через php и через php-cgi. Например:

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

Для запуска скрипта под версией «php 5.5» необходимо выполнить команду:

  • /opt/php/5.5/bin/php — путь к обработчику;
  • www/mysite.ru/info.php — путь к скрипту.

видно, что скрипт запустился под «php 5.5».

Аналогичным образом можно запустить скрипт под любой другой доступной сборкой php:

  • /opt/php/4.4.9/bin/php
  • /opt/php/5.1/bin/php
  • /opt/php/5.2/bin/php
  • /opt/php/5.3/bin/php
  • /opt/php/5.3-bx-optimized/bin/php
  • /opt/php/5.3-with-xcache/bin/php
  • /opt/php/5.4/bin/php
  • /opt/php/5.4-bx-optimized/bin/php
  • /opt/php/5.4-bx-optimized2/bin/php
  • /opt/php/5.4-with-xcache/bin/php
  • /opt/php/5.5/bin/php
  • /opt/php/5.5-bx-optimized/bin/php
  • /opt/php/5.6/bin/php
  • /opt/php/5.6-bx-optimized/bin/php
  • /opt/php/7.0/bin/php
  • /opt/php/7.0-bx-optimized/bin/php
  • /opt/php/7.1/bin/php

Узнать подробную информацию о сборке php можно при помощи команды:

Уроки WordPress

Уроки разработки из собственного опыта

Скрипт для определения браузера пользователя на PHP

Автор: Николаенко Максим · Опубликовано Октябрь 21, 2012 · Обновлено Август 11, 2020

Недавно для одного интересного проекта мне потребовалось сделать определение браузера и его версии на PHP. Шаблон был адаптивный (responcive), и надо было подстроить под разные браузеры вывод элементов страницы. Сайт я писал на любимом движке WordPress и тема была сверстана под него. Как всегда недолго думая над задачей полез я в Интернет. Мое было удивление когда я нашел готовый скрипт, который полностью меня устроил в первой десятке выдачи google. Респект и уважуха разработчику и блогеру который этот скрипт написал и выложил у себя на блоге.

Чем он особо мне понравился, так это тем, что скрипт мог определять браузеры на движке Gecko, а не только основные браузеры (Firefox, Chrome, IE, Opera, Safari), и даже те, которые построены на ядре Trident (Maxthon, Avant Browser, MyIE2), и даже старые версии Оперы, маскирующиеся под IE. Кроме того, скрипт находит и отображает версию браузера.

Автор блога выложил некоторые сведения, которые я также хотел бы выложить себе на сайт.

Теория из слов автора:

Как определяется браузер на PHP?
В PHP есть замечательная переменная под названием $_SERVER[‘HTTP_USER_AGENT’].
У меня, например, она выглядит так:

Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10
Отсюда вытащить браузер и версию просто, не так ли?

Теперь IE 6
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
Здесь уже немного посложнее, но тоже не должно вызывать особых затруднений.

Opera 10.61
Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.61
Опера приготовила нам подлянку: название браузера в начале, а версия, как это не странно, в конце.

Safari 5.1
Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU) AppleWebKit/533.17.8 (KHTML, like Gecko) Version/5.0.1 Safari/533.17.8
Safari тоже удивляет: через слэш идёт вовсе не номер версии. Номер версии идёт чуть раньше.

Chrome 6.0.427.0
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.427.0 Safari/534.1
Хром вытащить легче, хорошо бы ещё не перепутать его с Safari…


(О том, почему все браузеры (кроме Оперы) называют себя Mozilla можно в простой и увлекательной форме почитать здесь.)

Практика из слов автора

Вы уже узнали, какое разнообразие в строке User-agent предлагают всего лишь пять браузеров.
Но в 9 из 10 случаев нас спасёт следующее регулярное выражение:

После этого во втором элементе массива будет лежать название браузера, а в третьем — его версия.

Исключение представляет лишь Safari начиная с версии 3.0 и Opera начиная с версии 10.00.

Для этих браузеров мы пишем:

И ещё одна строка кода:

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

Её код целиком:

Вот более полная версия, позволяющая определять экзотические, устаревшие, а также те браузеры, которые построены на основе Firefox и IE:

Примеры работы
В таблице приведён результат работы двух функций — в первом столбце браузер, в котором вызывались функции, во втором — ответ функции, учитывающей малоизвестные браузеры, в третьей — результат работы сокращённой функции.

Браузер Результат полной функции Результат сокращённой функц ии
Firefox 1.5.0.12 Firefox 1.5.0.12 Firefox 1.5.0.12
Firefox 3.0.10 Firefox 3.0.10 Firefox 3.0.10
Firefox 3.6.9 Firefox 3.6.9 Firefox 3.6.9
Firefox 4.0 Firefox 4.0 Firefox 4.0
IE 4.01 IE 4.01 MSIE 4.01
IE 5.5 IE 5.5 MSIE 5.5
IE 6.0 IE 6.0 MSIE 6.0
IE 7.0 IE 7.0 MSIE 7.0
IE 8.0 IE 8.0 MSIE 8.0
Chrome 5.0.375.127 Chrome 5.0.375.127 Chrome 5.0.375.127
Chromium 6.0.472.36 Chrome 6.0.472.36 Chrome 6.0.472.36
Chrome 7.0.517.8 Chrome 7.0.517.8 Chrome 7.0.517.8
Opera 7.03 Opera 7.03 MSIE 6.0
Opera 8.0 Opera 8.0 MSIE 6.0
Opera 8.54 Opera 8.54 Opera 8.54
Opera 9.50 Opera 9.50 Opera 9.50
Opera 10.00 Opera 10.00 Opera 10.00
Opera 10.10 Opera 10.10 Opera 10.10
Opera 10.61 Opera 10.61 Opera 10.61
Safari 3.0 Safari 3.0 Safari 3.0
Safari 4.0 Safari 4.0 Safari 4.0
Safari 5.0.1 Safari 5.0.1 Safari 5.0.1
Flock 1.2.6 Flock 1.2.6 Firefox 2.0.0.17
Epiphany 2.22 Epiphany 2.22 Firefox 2.0.0.20
Navigator 9.0.0.6 Navigator 9.0.0.6 Firefox 2.0.0.12
Netscape 8.1.3 Netscape 8.1.3 Browser based on Gecko
Konqueror 4.4 Konqueror 4.4 Browser based on Gecko
Galeon 2.0.4 Browser based on Gecko Browser based on Gecko
Iceape 1.1.13 Browser based on Gecko Browser based on Gecko
Iceweasel 3.0.4 Iceweasel 3.0.4 Browser based on Gecko
SeaMonkey 1.1.14 SeaMonkey 1.1.14 Browser based on Gecko
Minefield 3.7 Minefield 3.7 Browser based on Gecko
Avant Browser 7.0 Avant Browser based on IE 7.0 MSIE 7.0
Camino 2.0.4 Camino 2.0.4 Firefox 3.0.19

Красным цветом отмечены браузеры, которые функция не смогла определить.

А здесь вы можете проверить работу функций в своём браузере.
Надеюсь, что эти функции будут кому-то полезны.
Удачи.

Скачать скрипт для определения браузера можно у меня:

или на сайте автора:

Еще раз отдельное спасибо автору!

Определяем мобильные браузеры

Еще из комментариев на сайте автора нашел, как определить мобильные устройстка:

Как улучшить производительность PHP для веб-приложений

Программистам очень нравится последняя версия PHP — одного из наиболее быстрых языков сценариев. В этом можно убедиться, прочитав, например, статью « Сравнение производительности PHP 7.0 и HHVM » на Хабрахабре или статью на английском языке “ PHP 7 vs HHVM – Which One Should You Use? ”

Однако поддержание оптимальной производительности PHP — это не только быстрое выполнение кода. Лучший инструмент для улучшения производительности PHP не найти среди готовых программ. Необходимо знать, на какие именно проблемы производительности обратить внимание и как их решать . В этой статье мы постарались собрать все, что нужно для успешной работы с PHP-приложениями.

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

Краткая история PHP

PHP — это язык сценариев, изобретенный Расмусом Лердорфом ( Rasmus Lerdorf ) в 1995 году. Первоначально этот язык разработчики написали для себя. Поэтому язык получил соответствующее название PHP как аббревиатуру от “ Personal Home Page” — «Личная Домашняя Страница».

В ходе дальнейшей работы над языком Лердорф существенно расширил функциональность PHP, поэтому считается, что PHP теперь является рекурсивной аббревиатурой от “PHP: Hypertext Preprocessor” — « PHP : Гипертекстовый Препроцессор».

За последние два десятилетия группа разработчиков PHP улучшила производительность PHP в следующих направлениях:

1. Прежде всего, в 1999 году появился новый PHP -движок Zend Engine;

2. В 2000 году вышел PHP 4, который включал компилятор в памяти и модель исполнителя, что позволило использовать PHP для создания динамических веб-приложений;

3. В 2004 году был выпущен PHP 5. Кроме прочего — обновилось ядро Zend (Zend Engine 2), что существенно увеличило эффективность этого интерпретатора;

4. В 2015 году появился обновленный PHP 7.0 с улучшенным движком Zend Engine и уменьшенным потребления памяти ;

5. В момент написания статьи доступна новейшая версия PHP 7.1 от декабря 2020 года. Веб-сайт классов PHP содержит подробное описание всех изменений, внесенных между PHP 5 и PHP 7.1 (также в Википедии ).

Что такое действительно хорошая производительность PHP ?

Следует иметь ввиду, что производительность и скорость — не являются синонимами. Оптимальная производительность балансирует между скоростью, безошибочностью и масштабируемостью. Например, при написании веб-приложения придется выбирать между двумя приоритетами:

1) приоритетом скорости , написав скрипт, который заранее загружает все в память;

2) приоритетом масштабируемости со скриптом, который загружает данные блоками.

На следующем рисунке 1 показан теоретический компромисс между скоростью и масштабируемостью.

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

Илон Маск рекомендует:  Что такое код asp passwordcachettl

Рис. 1. Теоретический компромисс между скоростью и масштабируемостью

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

Получаем, что когда трафик превышает определенный порог, сценарий для скорости становится медленнее сценария для масштабируемости . Этот порог хорошо виден на рисунке как пересечение красной и синей линий.

Здесь можно провести аналогию с бегунами на разные дистанции: со спринтером (бегуном на короткие дистанции) и стайером (бегуном на длинные дистанции). Спринтеры намного быстрее бегут на короткие дистанции, но на более длинных они утомляются. Стайеры держат более медленный, но более стабильный темп, который позволяет им сохранять энергию на больших расстояниях . Аналогично, разные скрипты работают лучше в различных ситуациях. Правильный выбор скрипта для конкретного приложения требует наблюдения за активностью пользователей на сайте. При росте трафика придется переходить с одного скрипта на другой.

Когда следует начинать оптимизировать PHP -код?

Опытные программисты время от времени сохраняют протестированный код, заканчивая тем самым цикл проекта. Но это разумно делать только при хорошей производительности PHP-приложения!

Как добиться хорошей производительности PHP-приложения? Необходимо проводить тесты во время процесса разработки . Иначе придется переписывать большие блоки кода, чтобы заставить приложение нормально функционировать.

Оптимизировать PHP -код следует начинать перед созданием PHP-приложения! Необходимо сразу оценить состояние вашего железа и программного обеспечения, чтобы определить параметры их производительности. Эта информация при кодировании приложения позволит оценить риски и выигрыш конкретных компромиссов. Причем необходимо использовать адекватные тестовые данные , иначе код приложения окажется бесперспективным.

Советы по оптимизации PHP -скриптов

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

1. Используйте готовые функции PHP

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

2. Используйте JSON вместо XML


Функции PHP json_encode() и json_decode() просто невероятно быстры. Поэтому использование JSON предпочтительнее использования XML.

Если вам все же приходится разбираться с XML, лучше использовать шаблонные регулярные выражения, чем манипуляции с DOM.

3. Используйте методы кэширования

Кэш-память особенно полезна для сокращения объема загружаемых данных.

Кэширование байт-кода с помощью APC или OPcache сильно экономит время выполнения скомпилированного сценария.

4. Уберите лишние вычисления

Если одно и то же значение выражения используется многократно, вычислите его заранее и присвойте переменной. Тогда не придется его вычислять каждый раз.

5. Используйте isset()

Проводите сравнения с помощью пар count () , strlen() и sizeof() , isset() . Это быстрый и простой способ поиска значений, больше нуля.

6. Отключите ненужные классы

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

7. Отключите отладочные сообщения

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

8. Закрывайте соединения с базой данных

Сбрасывание переменных и закрытие соединений с базой данных сэкономит драгоценную память.

9. Ограничьте обращения к базе данных

Старайтесь использовать совокупности запросов к базе данных. Это сокращает количество обращений к базе данных, приложение будет работать быстрее.

10. Используйте строковые функции Str

str_replace быстрее, чем preg_replace , а strtr в четыре раза быстрее, чем str_replace .

11. Используйте одинарные кавычки

Когда только возможно, используйте одинарные кавычки, а не двойные. Двойные кавычки проверяются компилятором на переменные, что понижает производительность.

12. Используйте три знака равенства

Поскольку « = = =» проверяет величины только одного типа, это делает оператор сравнения « = = =» более быстрым, чем оператор « = =» .

Узкие места производительности PHP

Бывает, конечно, что переделка сценариев выгодна. Однако есть проблемы, которые понижают производительность PHP, не связанные с кодом приложения. Поэтому разработчикам нужно разбираться в подсистемах их сервера, чтобы определить и устранить узкие места . Ниже перечислены области, которые нужно проверять при появлении проблем с производительностью.

1. Сеть

Один из очевидных источников узких мест — это сети. Может просто не хватить ресурсов сети для обработки передаваемого объема данных.

2. Центральный процессор

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

3. Совместно используемая память

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

4. Файловая система

Файловая система со временем становится фрагментированной. Поэтому используйте файловый кэш RAM, который ускорит доступ к диску, если этот кэш достаточного размера.

5. Управление процессами

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

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

6. Другие серверы

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

Еще советы по улучшению производительности PHP

1. Используйте расширение ядра Zend OPCache

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

Zend OPCache — это расширение, которое сохраняет скомпилированный код в памяти. Это позволяет PHP в следующий раз при выполнении кода проверять разметки времени и размеры файла, чтобы определить, были ли части исходного файла изменены. Если таких изменений не было, то будет запущен сохраненный код.

Более подробную информацию можно получить в статье на Хабрахабре « PHP Performance Series: Caching Techniques »

На рисунке 2 показано различие во времени выполнения и использовании памяти между PHP-приложением, выполняемым: 1) без кэша; 2) с OPcache; 3) с eAccelerator (другой инструмент PHP-кэширования).

Правый график показывает время выполнения в миллисекундах ( Execution Time (ms) ), левый — использование памяти в мегабайтах ( Memory usage (mb) ). Столбики синего цвета соответствуют отсутствию кэширования , красного — кэшированию OPcache , зеленого — кэшированию eAccelerator.

Из рисунка 2 следует, что кэширование OPcache снижает как время выполнения, так и использование памяти примерно в два раза по сравнению с отсутствием кэширования. Кэширование eAccelerator немного уступает кэшированию OPcache.

Рис. 2. Столбиковые диаграммы различия во времени выполнения и использовании памяти между PHP-приложением, выполняемым без кэширования, с OPcache и с eAccelerator

2. Выявите задержки базы данных

Как уже сказано выше, проблемы производительности не всегда связаны с кодом. Большинство узких мест возникает при обращении приложения к ресурсам. Обслуживание доступа к данным PHP-приложения может составлять до 90 процентов времени выполнения . Поэтому в первую очередь необходимо проанализировать все случаи доступа к базе данных.

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


Как узнать, какие из запросов выполняются дольше всего? Более подробно см. статью на Хабрахабре « Как выявить медленные SQL запросы? », URL: https://habrahabr.ru/post/31072/

3. Очистите файловую систему

Проанализируйте файловую систему на неэффективность, то есть удостоверьтесь, что файловая система не используется для хранения сессий. Самое главное — внимательно следите за функциями статистики файлов: file_exists(), filesize() и filetime(). Попадание этих функций внутрь цикла приводит к проблемам с производительностью.

4. Тщательно контролируйте показ API

Большинство веб-приложений, которые зависят от внешних ресурсов, используют удаленный API . Хотя удаленный API находится вне вашего контроля, однако можно смягчить проблемы API-производительности. Например, можно кэшировать API-вывод или делать фоновые вызовы API. Установите разумные интервалы для API-запросов и, если это возможно, показывайте на дисплее API -вывод без ответа API.

5. Профилируйте PHP

Использования OPcache и управления внешними ресурсами достаточно, чтобы большинство приложений выполнялись благополучно. Но если ваши потребности растут, пора профилировать PHP. Конечно, полное профилирование PHP-кода отнимает много времени, но оно дает всестороннюю информацию о производительности PHP-приложения. Имеются общедоступные программы для профилирования PHP-кода, такие, как Xdebug.

Xdebug рассматривается в статье на Хабрахабре « Introducing xdebug »

Необходимо уметь контролировать производительность PHP

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

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

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

Перспективы улучшения производительности PHP

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

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

PHP: использование программ на языке PHP

Пользователям хостинга предоставляется возможность использовать на своих сайтах программы на языке PHP (в соответствии с тарифным планом). У нас установлена одна из последних версий PHP и мы стараемся по мере возможности ее обновлять. Текущую конфигурацию можно посмотреть при помощи функции phpinfo().

Пример скрипта для просмотра конфигурации PHP:

Что такое PHP и как начать с ним работать

PHP: Hypertext Preprocessor — очень простой даже для начинающего веб-программиста язык, который, тем не менее, обладает очень серьезными возможностями. PHP — язык достаточно высокого уровня, что позволяет просто реализовывать на нем именно веб-проекты, не заботясь при этом о ненужных низкоуровневых процессах. Если Вы хотите добавить динамику и интерактив на свой сайт, но при этом не хотите изучать более сложные языки вроде Perl, можно использовать PHP. Этот язык также содержит большое количество встроенных возможностей для работы с популярной СУБД MySQL, что делает выбор PHP для веб-программирования еще более привлекательным.

Начать использовать PHP очень просто: нужно создать в веб-пространстве файл с расширением *.php и поместить в него нужные PHP-инструкции . Например, создадим файл test.php в каталоге www вашего домена и поместим в него следующий текст:

Теперь откройте страницу http://www.ваш_домен.ru/test.php и Вы увидите результат выполнения скрипта. PHP — это просто. Простоты этому языку добавляет наличие отличной документации на русском языке, которая доступна здесь . Есть отличный поиск по документации, примеры использования функций, а также прямо на сайте Вы можете почитать рекомендации пользователей PHP по применению конкретных возможностей.

Поддерживаемые на нашем хостинге функции

Мы используем одну из последних версий PHP в виде модуля для веб-сервера Apache, которая собрана с поддержкой следующих модулей (функций):

Расширения файлов для PHP-скриптов, как добавить свое расширение

Интерпретатором PHP автоматически обрабатываются как PHP-сценарии файлы со следующими расширениями:

Илон Маск рекомендует:  Иконка в адресной строке

То есть, файлы, имеющие такие расширения, будут автоматически обрабатываться веб-сервером как PHP-скрипты . Например, index.php или 123.phtml. Пользователь может самостоятельно добавить собственные расширения для обработки соответствующих файлов как PHP-сценариев , поместив в файл .htaccess строку вида:

где ext1, php3 и .html — добавляемые расширения в названии файлов. Например, в данном случае PHP-скриптами будут считаться файлы index.ext1, file.php3 и test.html.

Отправка писем с вложениями при помощи функции mail

Ссылки на готовые примеры скриптов, использующих функцию mail для отправки писем с вложениями, есть в документации на сайте разработчика: LII. Mail Functions .

Авторизованная отправка писем с серверов виртуального UNIX-хостинга

В целях безопасности, на всех серверах виртуального UNIX-хостинга заблокированы исходящие соединения на 25 порт и 587, поэтому необходимо использовать альтернативный номер порта, который нужно уточнить у владельца SMTP-сервера. Если отправка будет осуществляться через наш SMTP-сервер, используйте порт 2525.

Пример авторизованной отправки почты с использованием smtp-сервера.

Скачать пример готового скрипта с функцией MailSmtp(): smtpauth.php.sample

Использовать описанную выше функцию MailSmtp() можно для прямой замены функции mail(). Рассмотрим пример самой простой формы на PHP:

Для того, что бы данная форма заработала без функции mail() мы включили файл smtpauth.php через require_once и вызвали функцию MailSmtp(), описанную в нем, с аналогичными для mail() аргументами. При этом сам вызов mail() мы закомментировали в коде, что бы избежать ошибки при выполнении скрипта.

Отправка писем при помощи функции mail()

В следующим примере мы воспользуемся встроенной функцией mail(), где в качестве параметров, клиентские данные будут переданы посредством $_POST запроса.

Проблемы работы функций strtoupper() и strtolower() с кириллицей

Проблемы при работе с кириллицей в PHP-скриптах функций strtoupper() и strtolower() возникают, когда неправильно определена текущая локаль (locale). Для правильного её определения следует воспользоваться функцией setlocale() в самом начале вашего PHP-сценария:

Поиск с помощью Яндекс.XML

Если Вы решили воспользоваться сервисом Яндекс.XML , то прежде всего вам потребуется выделенный IP-адрес , который Вы можете добавить для любого домена в личном кабинете: в меню Древо услуг > Домен, напротив характеристики «выделенный IP/SSL» нажмите «добавить» (в данном случае подключать SSL не обязательно, но в комментариях обязательно укажите причину, по которой вам понадобился выделенный IP-адрес ).

Далее для организации запроса именно с выделенного IP-адреса существует несколько вариантов:

Здесь переменная $search обозначает только сам поисковый запрос, как это описано на сайте Яндекса, то, что написано после выражения «query=».

Переменная $search — HTTP-запрос целиком (то есть URL).

Как измененить версию PHP

Для изменения версии PHP пройдите в личный кабинет https://cp.masterhost.ru, нажмите на пункт меню «Древо услуг» и выберите вашу виртуальную площадку uXXXXX. Далее в списке параметров найдите строчку смена версии ПО и нажмите кнопку изменить, как показано на рисунке.

Если необходимо изменить версию PHP только для одного домена, то необходимо в «Древе услуг» выбрать домен, далее PHP и нажать кнопку изменить, как на рисунке:

Затем в выпадающем списке выбрать нужную версию PHP.

Как увеличить лимиты: потребление оперативной памяти (memory_limit), время выполнения скрипта (max_execution_time) и т.п.


Лимиты потребления PHP-интерпретатором ресурсов сервера (memory_limit, max_execution_time и т.п.) регулируются тарифным планом площадки виртуального хостинга. Чтобы увеличить такие лимиты, необходимо перейти на следующий по старшинству тарифный план. Ознакомиться с техническими параметрами Вашего тарифного плана можно в Приложении №1.1 к Публичной оферте (Договору), а также на странице с выводом функции phpinfo(), ссылка на которую доступна на странице с характеристиками тарифного плана.

Как собрать свой собственный интерпретатор PHP или внести изменения на уровне компиляции PHP (добавление модулей, изменение системных опций PHP_INI_SYSTEM)

На серверах виртуального хостинга недоступен Си-компилятор, поэтому сборка из исходных кодов собственного PHP-интерпретатора невозможна. Если для работы Вашего проекта требуется нестандартная конфигурация PHP или наличие библиотек, которые отсутствуют в нашей сборке, мы рекомендуем рассмотреть наши услуги по аренде виртуального (VPS) или физического (dedicated) сервера без нашего администрирования. Такой сервер не будет зависеть от конфигурации и ограничений нашей хостинговой среды, и Вы, как администратор сервера, сможете самостоятельно установить и настроить любое необходимое Вашему проекту программное обеспечение.

Также о возможности установки нестандартного ПО на Вашей площадке Вы можете уточнить у наших инженеров службы технической поддержки, отправив письменную заявку «на свободную тему» из Личного кабинета. Возможно, предоставление этого ПО на площадках виртуального хостинга уже находится в наших ближайших планах, или мы сможем установить его для Вас на dediacated сервер с нашим администрированием.

Как изменить значение опций, имеющих статус изменяемости PHP_INI_PERDIR или PHP_INI_ALL

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

На открывшейся странице Вам будет доступен интерфейс управления некоторыми настройками PHP-интерпретатора

Если нужной директивы со статусом изменяемости PHP_INI_PERDIR или PHP_INI_ALL нет в списке, Вы можете изменить ее с помощью управляющего файла .htaccess

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

Теперь все вызовы функции mail() скриптами этого сайта будут записываться в файл phpmail.log в корне площадки u12345. Аналогичным образом можно менять и другие директивы, если их статус изменяемости соответствует PHP_INI_PERDIR или PHP_INI_ALL.

Напомним значение и расшифровку констант PHP_INI_*:

PHP_INI_USER 1 Опция может быть установлена в пользовательских скриптах
PHP_INI_PERDIR 2 Опция может быть установлена в php.ini , .htaccess или httpd.conf
PHP_INI_SYSTEM 4 Опция может быть установлена в php.ini или httpd.conf
PHP_INI_ALL 7 Опция может быть установлена где угодно

Список, описание и статус изменяемости директив можно найти в приложении G документации PHP.

Как выполнять PHP-скрипты в заданное время по расписанию

Иногда у PHP-программистов возникают задачи, которые требуют запуска PHP-скриптов в указанное время. Например, загрузка прайс-листа в базу данных, создание/удаление файлов на диске сервера, загрузка на сервер документов с других серверов и так далее. Можно использовать для этого возможности программы cron, которая работает на сервере.

Подробности о работе cron и его использовании Вы найдете в отдельном документе. Здесь же мы опишем тонкости запуска таким образом именно PHP-скриптов .

На наших серверах установлен бинарный файл интерпретатора PHP, который можно вызывать из cron. Полный путь к нему — /usr/local/bin/php. В качестве параметра нужно передать полный путь до запускаемого PHP-скрипта . Пример задания для cron:

в случае с PHP 5

или в случае с PHP 4

В данном примере скрипт, который находится на диске сервера и имеет полный путь /home/uXXXXX/script.php, запускается в 1 час ночи каждый день. Не забывайте нажимать Enter после каждой строки в cron — все строки в сценариях cron должны заканчиваться переводом строки или задание работать не будет.

Вывод ошибок в PHP

Иногда возникает необходимость получить информацию о том, какие ошибки возникают при выполнении PHP-скриптов. При использовании PHP как модуля Apache (по умолчанию именно так) вывод ошибок доступен в личном кабинете в меню Древо услуг в разделе Домен domain.tld, где domain.tld — имя вашего домена, далее характеристика HTTP > error_log.

Иногда имеет смысл включить вывод ошибок PHP-скриптов на экран. Возможно 2 случая:

Если Вы используйте PHP-интерпретатор как модуль Apache, создайте в той директории, где находятся скрипты, файл .htaccess (если он не существует) и добавьте 2 строки, одна из которых включает вывод ошибок в браузер, а вторая определяет уровень отображаемых ошибок:

Число 2047 является значением константы E_ALL и включает вывод всех типов ошибок. Значение константы E_ALL зависит от версии PHP. Точное значение можно узнать на сайте разработчика .

Если Вы используете PHP-интерпретатор как CGI, то для вывода ошибок следует в файле настроек для PHP, изменить значение параметра

Кроме этого, надо изменить значение параметра error_reporting со значения E_ALL & E_NOTICE на простое E_ALL (по желанию).

Ошибки при выполнении PHP-скриптов могут быть разного типа. Полный список констант, определяющих тип отображаемых ошибок, может быть найден на сайте разработчика

Ограничения

Нужно учитывать, что на работу PHP налагаются некоторые ограничения. По соображениям безопасности мы запретили использование следующих команд:

  • dl
  • shell_exec
  • exec
  • system
  • passthru
  • popen
  • proc_open
  • proc_nice
  • proc_get_status
  • proc_close
  • proc_terminate
  • posix_mkfifo
  • set_time_limit
  • chown
  • chgrp
  • accelerator_reset
  • opcache_reset
  • accelerator_get_status
  • opcache_get_status
  • pcntl_alarm
  • pcntl_fork
  • pcntl_waitpid
  • pcntl_wait
  • pcntl_wifexited
  • pcntl_wifstopped
  • pcntl_wifsignaled
  • pcntl_wexitstatus
  • pcntl_wtermsig
  • pcntl_wstopsig
  • pcntl_signal
  • pcntl_signal_dispatch
  • pcntl_get_last_error
  • pcntl_strerror
  • pcntl_sigprocmask
  • pcntl_sigwaitinfo
  • pcntl_sigtimedwait
  • pcntl_exec
  • pcntl_getpriority
  • pcntl_setpriority

Если на самом деле Вы хотите использовать функции вроде exec для выполнения периодических заданий вроде бэкапа баз MySQL, пожалуйста, используйте для этого cron. Если же нужно разово выполнить какую-то команду, можно использовать для этого UNIX shell.

Документация и полезные ссылки

В помощь вам мы приводим ссылки на полезные ресурсы по тематике PHP:

  • Руководство по PHP — полная документация на русском языке с возможностью поиска
  • Клуб разработчиков PHP — на русском языке
  • Подборка статей по PHP — сервер CIT Forum

Как изменить версию php в консоли

Если у вас установлено несколько версий php в системе, то при вызове команды php в консоли, будет использоваться одна из них. Иногда необходимо для каких-то скриптов или сервисов управлять версией php в консоли. Я расскажу, как ее изменить.

У меня на сервере Debian установлены 2 версии php — 5.6 и 7.0. Для начала проверим, какая версия используется в данный момент:

Посмотрим, где располагается сам бинарник php:

Оказывается, что /usr/bin/php является символьной ссылкой. Посмотрим, куда она ведет:

Это еще одна символьная ссылка. Смотрим, куда ведет она:

На седьмую версию php. Заменим ее на 5.6, которая у меня установлена по адресу /usr/local/bin/php. Редактируем символьную ссылку:

Проверяем текущую версию php в консоли:

Все получилось. Теперь в консоли по-умолчанию будет использоваться нужная версия php. Можно проверять скрипты, не указывая полный путь к нужной версии.

Можно было поступить и по-другому. При вызове php в консоли, имя проверяется в переменной $PATH. Посмотреть ее значения можно командой:

Директории проверяются в том порядке, как они перечислены. Где будет найдено первое совпадение, тот файл и будет использоваться. В моем случае директория /usr/bin, где жила символьная ссылка на php7.0 стоит раньше, чем /usr/local/bin, где расположена php5.6. Можно было просто поменять местами эти директории в PATH и версия по-умолчанию станет 5.6, так как ее бинарник php будет найден раньше.

Более гибко управлять версиями php в системе можно с помощью программы update-alternatives. Она может делать в том числе и то, что мы сейчас проделали, только автоматически, в зависимости от своих настроек. С ее помощью можно более гибко управлять версиями, задавать приоритеты использования той или иной версии, быстро их переключать в полуавтоматическом режиме.

Мне все это не надо, поэтому не стал сильно разбираться с ее работой, только познакомился с возможностями. Рассказываю о ней в качестве наводки для тех, кому захочется более подробно разобраться в этой теме. Она может быть актуальна, если у вас установлена какая-нибудь панель управления хостингом с разными версиями php. Например — plesk.

Выбор версии PHP и управление расширениями

В настоящее время на хостинге RU-CENTER доступны версии интерпретатора PHP 5.2 — 5.6, 7.0 — 7.3.

1. Выбор версии модуля PHP

Управление модулем PHP производится в разделе Управление веб-серверомУправление модулем PHP панели управления хостингом.

Доступные для подключения версии модуля PHP представлены в разделе Управление веб-серверомУправление модулем PHP. Для того чтобы подключить подходящую под требования вашего сайта версию, необходимо выбрать её из выпадающего списка и нажать кнопку Применить. После подключения нужной версии модуля PHP вы можете перейти к его настройке.

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

2. Управление расширениями модуля PHP

Под списком версий PHP располагается список подключенных расширений.

Чтобы подключить расширение:

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

3. Получение подробной информации о настройках PHP

В панели управления показаны только отключаемые расширения. Получить полный список расширений и параметров вы можете с помощью функции phpinfo():

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL