Php die описание


Что такое PHP?

PHP — язык создания сценариев, который давно перерос свое название. Дело в том, что PHP — это аббревиатура от слов Personal Home Page. Первая версия PHP была создана Расмусом Лердорфом в 1994 г. и представляла собой набор инструментов для отслеживания посетителей Web-страницы. Со временем PHP из набора инструментов превратился в полноценный язык программирования, а его название было изменено как рекурсивное образование PHP HyperText Preprocessor (препроцессор гипертекста PHP).

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

В настоящее время основной версией PHP является седьмая.

Существуют два основных конкурента PHP: Active Server Pages (ASP) компании Microsoft и ColdFusion компании Allaire. По сравнению с ними PHP обладает рядом преимуществ, в числе которых:


  • Высокая производительность. PHP-программы работают быстрее, чем ASP.

    Как «делать что-то OR DIE ()» в PHP?

  • Функциональность. Разработку PHP-программы можно отделить от собственно разработки Web-страницы, что упростит жизнь и программисту, и дизайнеру.
  • Цена. PHP абсолютно бесплатен.
  • Простота в использовании. Имеющие опыт программирования на распространенных языках найдут синтаксис PHP хорошо знакомым.
  • Переносимость. Один и тот же PHP-код можно использовать как в среде NT, так и на платформах UNIX.

Общие правила построения PHP-программы

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

Расширение файлов PHP-программ по умолчанию в PHP4 — .php. На основании этого расширения сервер распознает файл как PHP-программу и запускает интерпретатор.

PHP-программа должна быть отделена от обычного HTML-текста. Существует четыре стиля обрамления PHP-кода:

Стиль Открывающий тег Закрывающий тег
Сокращенный <? ?>
XML (стандартный) <?php ?>
ASP <% %>
SCRIPT (программный) <SCRIPT LANGUAGE=»php»> </SCRIPT>

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

Так выглядит простейший смешанный документ, состоящий из HTML-текста и PHP-кода:

Пример 1

<html> <head> <title>Документ, состоящий из HTML-текста и PHP-кода</title> </head> <body> <?php echo «А вот и PHP!<br>»; ?> Всё очень просто! </body> </html>

Здесь содержится один PHP-оператор echo. Этот оператор передает строку-аргумент «А вот и PHP!<br>» в HTML-страницу, которую генерирует сервер. При этом тег сделает свое дело, т.е. осуществит переход на новую строку.

Для разделения операторов (по аналогии с Си) используется точка с запятой.

Комментарии в PHP-программе могут быть трех стилей:

/* Многострочный комментарий в стиле классического Си */ // Однострочный комментарий в стиле С++ # Однострочный комментарий в стиле Perl

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

В примере 1 заменим вызов функции на вызов встроенной функции phpinfo( ), которая выдаст список параметров PHP-среды.

Пример 2

<html> <head> <title>Информационная страница PHP</title> </head> <body> <?php phpinfo(); ?> </body> </html>

Выданная справка содержит большое количество разнообразной информации о среде PHP (обратите внимание на бегунок справа). Функция phpinfo() бывает весьма полезна при диагностировании поведения создаваемых PHP-программ.

Читать дальше: Основы языка PHP

steptosleep.ru


1. Создание функций с переменным числом аргументов

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

Но для начала, вспомним как мы создаём функции обычным образом:

Теперь посмотрим на то, как можно написать функцию с неограниченным количеством аргументов. Для этого будет использовать метод func_get_args():

2. Используем Glob() для поиска файлов

Часто названия функций говорят сами за себя. Такого нельзя сказать о функции glob().

Если не вдаваться в подробности, её функциональность схожа с методом scandir(). Она позволяет найти необходимый файл по шаблону:

Для нахождения файлов нескольких типов надо писать так:

Так же можно в шаблоне указать путь:

Для того чтобы получить полный путь к документу используйте метод realpath():

3. Информация об используемой памяти


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

В PHP существует мощный инструмент отслеживания используемой памяти. В разных частях скрипта нагрузки могут быть разные. Для того чтобы получить значение используемой памяти в данный момент, нам следует использовать метод memory_get_usage(). Для фиксации максимального количества используемой памяти используем memory_get_peak_usage()

4. Информация о процессоре

Для этого необходимо использовать метод getrusage(). Но учтите, что на Windows эта функция работать не будет.

Картина, изложенная выше, будет понятно тем, у кого есть опыт в системном администрировании. Для всех остальных предлагаем расшифровку:

  • ru_oublock: количество операций блочной записи
  • ru_inblock: количество операций блочного чтения
  • ru_msgsnd: количество отправленных сообщений
  • ru_msgrcv: количество принятых сообщений
  • ru_maxrss: максимальный размер невыгружаемого набора
  • ru_ixrss: общий объем разделяемой памяти

  • ru_idrss: общий объем неразделяемых данных
  • ru_minflt: количество используемых страниц памяти
  • ru_majflt: количество ошибок отсутствия страниц
  • ru_nsignals: количество принятых сигналов
  • ru_nvcsw: количество переключений контекста процессом
  • ru_nivcsw: количество принудительных переключений контекста
  • ru_nswap: количество обращений к диску при подкачке страниц
  • ru_utime.tv_usec: время работы в пользовательском режиме (микросекунды)
  • ru_utime.tv_sec: время работы в пользовательском режиме (секунды)
  • ru_stime.tv_usec: время работы в привилегированном режиме (микросекунды)
  • ru_stime.tv_sec: время работы в привилегированном режиме (секунды)

Для того чтобы узнать какие ресурсы вашего процессора используются скриптом, вам необходимо значение ‘user time’ (время работы в пользовательском режиме) и ’system time’ (время работы в привилегированном режиме). Вы можете получить результат как в секундах, так и в микросекундах. Для того чтобы превратить общее количество секунд в десятичное число, вам необходимо разделить значение микросекунд на 1 миллион и добавить к значению секунд.

Запутанно как-то. Вот пример:

Хотя выполнение скрипта заняло около 3-х секунд, процессор не был сильно нагружен. Дело в том, что при вызове (sleep) скрипт практически не потребляет ресурсов процессора. Вообще существует множество задач, которые занимают значительное время, но при этом не используют процессор. К примеру, ожидание операций связанных с диском. Так что вы не всегда используете процессорное время в своих скриптах.


Вот ещё пример:

Работа скрипта заняла 1.4 секунды процессорного времени. В данном случае, время системных вызовов вообще низкое.

Время работы в привилегированном режиме (System Time) – это время, которое процессор затрачивает на выполнение системных запросов к ядру от имени программы. Пример:

Теперь системного времени затратилось намного больше, чем в прошлом примере. Всё благодаря методу microtime(), который использует ресурсы системы.

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

5. Магические константы

В PHP существует множество магических констант, таких как номер текущей строки (__LINE__), путь к файлу (__FILE__), путь к каталогу (__DIR__), имя функции (__FUNCTION__), имя класса (__CLASS__), имя метода (__METHOD__) и пространства имён (__NAMESPACE__).

Все мы их рассматривать не будем. Посмотрим только лишь парочку:

Используйте __LINE__ при отладке скриптов:

6. Генерирование уникальных ID


Бывают такие моменты, когда вам надо сгенерировать уникальную строку. Множество раз я видел, что для решения этой задачи используют функцию md5():

Но на самом деле для этих целей в PHP есть специальная функция uniqid()

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

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

Этот метод генерирует строки размером меньше, чем md5, тем самым вы сможете сэкономить место.

7. Сериализация

Вам когда-нибудь приходилось хранить комплексные данные в базе или в файле? Для того чтобы сконвертировать объект в строку в PHP предусмотрена специальная функция.

Вообще говоря, этих методов 2: serialize() и unserialize()

Вот так вот работают эти функции. Однако из-за бурного роста популярности JSON, в PHP 5.2 были добавлены 2 метода json_encode() и json_decode(). Их работа схожа с serialize():

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

8. Сжатие строк


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

В следующем примере продемонстрируем работу функций gzcompress() и gzuncompress():

В наших силах уменьшить объём текста на 50%. В этих же целях можно использовать методы gzencode() и gzdecode(), которые используют другой алгоритм сжатия.

9. Выполнить перед завершением

В PHP существует функция register_shutdown_function(), которая позволит вам выполнить какой-то код перед завершением работы скрипта.

Допустим, вы хотите узнать какую-то информацию… Время работы скрипта:

На первый взгляд это может показаться тривиальной задачей. Для этих целей, вы можете поместить код в конце файла. Однако если перед этим где-то сработает функция exit(), этот код никогда не сработает. Так же, он не сработает если на странице будет ошибка или пользователь прервёт загрузку страницы (нажав на соответствующую кнопку в своём браузере);

При использовании метода register_shutdown_function() код выполнится в любом случае:

Вывод


PHP это целая планета, которая не перестаёт нас удивлять своим содержимым. А что думаете вы о данных функциях?

ruseller.com

Последний тип ошибок всевозможные нештатные ситуации. Они возникают, когда какоелибо событие на сервере происходит не так, как обычно. К счас тью, нештатные ситуации более редки, чем ошибки программирования. На пример, если база данных MySQL не работает, то все связанные с ней функции генерируют ошибки. Или; как мы видели в примере со страницей email.php, если серверное приложение электронной почты не функционирует (на серве ре UNIX), это тоже создаст проблему. Хотя системные ошибки не зависят от программиста, их необходимо иметь в виду при написании кода.

Дальнейшее распространение ошибок можно остановить с помощью ин струкции die. Эта инструкция заставляет РНР прекратить исполнение сцена рия, как только происходит первая ошибка и дальнейшая работа невозможна. Она также может отправить в браузер сообщение об ошибке или вызвать функ цию. Например,

$Link=mysql_connect($Host,$User,$Password) or die
—("Couldn't connect to database.");


Если по какойлибо причине не удается установить связь с базой данных, сценарий прекратит свое исполнение и напечатает сообщение «Couldn’t connect to database».

$Link=mysql_connect($Host,$User,$Password) or die (mysql_error()};

В этом примере, если код РНР не может установить связь с базой данных, инструкция die вызовет функцию mysql_error ( ) . Эта функция напечатает реальную ошибку, сгенерированную базой данных MySQL.

Оба примера работают: если код РНР определит, что первая часть условной конструкции or (значение, возвращаемое функцией mysgl_connect) имеет лож ное значение, то будет инициирована вторая часть условной конструкции (ин струкция die) с целью узнать значение всего логического оператора. Другими словами, строка «говорит»: если установить связь с сервером БД невозможно, делай это. Если связь с базой устанавливается, значит, это то, что требовалось, и вторая часть логического оператора or не проверяется и не выполняется. Добавим инструкцию die в базовый сценарий, который устанавливает связь с MySQL, а затем пытается выбрать базу данных.

Выполнение действия

  1. Создайте новый PHPдокумент в текстовом редакторе.
  2. Начните со стандартного HTMLдокумента.
  3. <HTML>
    <HEAD>
    <TITLE>Die!</TITLE></HEAD>
    <BODY>

  4. Откройте PHPраздел и задайте переменные для доступа в базу данных.
  5. <?php
    // Установка значений переменных для доступа к базе данных.
    $Host = "localhost";
    $User = "username";
    $Password = "password";
    $DBName = "database";

  6. Отключите отчеты об ошибках.
  7. error_reporting(0);

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

  8. Подсоединитесь к базе MySQL.
  9. $Link = mysql_connect ($Host, $User, $Password) or die("Couldn't
    connect to the database!");

    Эта строка кода «говорит» РНР попытаться установить связь с MySQL. Если по какойлибо причине сделать этого не удается, вы увидите сообщение «Couldn’t connect to database», а исполнение сценария приостановится. Очень важно сразу же остановить исполнение сценария: если не удастся подсоеди ниться к базе данных, следующие две строки кода, зависящие именно от этой "операции, также вызовут сообщения об ошибках. (В действительности сообще ние об ошибке не появится, так как мы отключили функцию error_reporting, но программа работать не будет).

  10. Выберите базу данных.
  11. mysql_select_db ($DBName, $Link) or die (mysql_error (•) ) ;

    Если выбрать базу данных, определенную в аргументе $DBName, не удалось, то сценарий прекратит исполнение и будет распечатано сообщение об ошиб ке, сгенерированное MySQL.

  12. Отключите связь с MySQL и закройте РНРраздел.
  13. mysql_close ($Link);
    ?>

  14. Создайте простое сообщение и закройте HTMLстраницу.
  15. Testing the die statement!
    </BODY>
    </HTML>

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

  16. Сохраните сценарий как die.php (листинг 14.6), загрузите его на сервер и протестируйте в браузере (рис. 14.1114.13).
    Листинг 14.6 т Для сценариев, состоящих из нескольких строк кода, каждая из.которых зависит от успешного исполнения предыдущей строки, инструкция die бесценна для прекращения дальнейшего распространения ошибок и их бы строго обнаружения. В связи с тем что инструкция die обрабатывает ошибки, встроенная в РНР обработка ошибок была выключена (сравните рис. 14.11 и 14.13).
  17. 1 <HTML>
    2 <HEAD>
    3 <TITLE>Die!</TITLEx/HEAD>
    4 <BODY>
    5 <?php
    6 // Установка переменных для доступа к базе данных.
    7 $Host = "localhost";
    8 $User = "username";
    9 $Password = "password";
    10 $DBName = "database";
    11 error_reporting(0);
    12 $Link = mysgl_eonnect ($Host, $User, $Password) or die("Couldn't
    connect to thedatabase!");
    13 mysql_select_db ($DBName, $Link) or die(myeql_error());
    14 mysql_close ($Link);
    15 ?>
    16 Testing the die statement!
    17 </BODY>
    18 </HTML>

    Вы можете предотвратить создание сообщений об ошибках с помощью разме щения символа коммерческое «а» перед вызовом любой функции. Символ @ на зывают оператором управления ошибками, он подавляет любые сообщения об ошибках, вызванные функцией, перед которой стоит. Символ используется сле дующим образом:

$Link=@mysql_connect ($Host, $User, $Password); $Link =@mysql_connect ($Host, $User, $Password) or —die(print_message("Couldn't connect."));

www.weblibrary.biz


You May Also Like

About the Author: admind

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.