Сценарий for php


Опубликовано: 21.11.2017, 16:05/ Просмотров: 1052

сценарий for php Новые статьи: Обзор беспроводных наушников Apple AirPods

Функции управления сценарием

set_time_limit

Установка предельного времени исполнения сценария.
Синтаксис:

void set_time_limit(int seconds)

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

По умолчанию допустимое время исполнения сценария устанавливается в файле конфигурации параметром max_execution_time (обычно оно равно 30 с). Но для текущего сценария это время можно изменить вызовом данной функции, указав время в секундах в ее аргументе. Если указывается значение 0, то тогда временное ограничение снимается.
Отсчет времени начинается от момента вызова функции. Например, если сценарий уже выполнялся в течении
15 секунд, а затем вызывается функция set_time_limit(20), то общее максимальное время исполнения сценария становится равным 35 секундам.
Если сценарий выполняется в безопасном режиме (с установленным параметром safe mode), то тогда вызов этой функции игнорируется и используется значение из файла конфигурации

sleep

Задержка выполнения сценария.
Синтаксис:

void sleep(int seconds);

Фукция sleep() выполняет задержку выполнения сценария в секундах (seconds).

usleep

Задержка выполнения сценария в микросекундах.
Синтаксис:

void usleep(int micro_seconds);

Задержка выполнения сценария в микросекундах (micro_seconds).

Эта функция не работает в Windows

die

Вывод сообщения и завершение текущего сценария.
Синтаксис:

void die(string message);

Эта функция выводит сообщение и прекращает выполнение текущего скрипта. Не возвращает значение.

<?php$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
or die "unable to open file ($filename)";
?>

exit

Завершает текущий сценарий.
Синтаксис:

void exit(void);

Эта функция завершает текущий сценарий. Не возвращает значение.

assert

Проверка истинности значения.
Синтаксис:

int assert(string|bool assertion);

В качестве аргумента функции может быть указано значение или строка, содержащая код PHP
(как в функции eval()). Функция проверяет, является ли значение (или выражение) равным false, и, если это так, выполняет определенные действия.
Поведение функции определяется установками в файле конфигурации или при вызове функции assert_options().

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

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

<?phpfunction handler() {
echo "n Failed n";
}
assert("$a='1';");
echo "a: $a n";
assert(0);
// завершать сценарийecho assert_options(ASSERT_BAIL, 1);
// вызвать обработчикassert_options(ASSERT_CALLBACK, "handler");
// не выдавать сообщений PHP
@assert(--$a);
// эта строка не будет выполненаecho "n... n";
?>

Приведенный пример выведет:

a: 1
Warning: Assertion failed in file.php on line 20
0
Failed

assert_options

Определение параметров assert.
Синтаксис:

mixed assert_options(int parameter [, mixed value])

Эта функция позволяет определить поведение конструкции assert().

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

Параметр ini-параметр Умолчание Описание
ASSERT_ACTIVE asser.active 1 Разрешить указание кода в assert().
ASSERT_WARNING assert.warning 1 Выдавать предупреждение PHP.
ASSERT_BAIL assert.bail 0 Завершать выполнение, если "неистинно".
ASSERT_QUIET_EVAL assert.quiet_eval 0 Не выдавать сообщений.
ASSERT_CALLBACK assert_callback (null) Установить функцию в качестве обработчика
"неистинных" assert().

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

eval

Производит выполнение строки содержащей PHP код.
Синтаксис:

void eval(string code_str);

Функция eval() производит выполнение строки, заданной в code_str содержащей PHP код. Кстати, это может пригодиться для сохранения кода в текстовом поле базы данных для более позднего выполнения. Не забывайте, что указанный в строке код должен быть синтаксически правильным (например, должны присутствовать точки с запятой после каждой команды и т.п.), в противном случае сценарий будет завершен в этой строке с ошибкой. Учитывайте также, что те значения переменных, которые будут установлены в данной строке, будут использоваться в оставшейся части сценария.
При изменении переменных значений в eval() эти переменные будут изменены и в основных данных.
Если в строке указан оператор return, то тогда выполнение указанного кода будет досрочно завершено и возвращенное значение можно будет получить как значение, возвращаемое самой функции.

<?php$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.
';
echo $str;
eval( "$str = "$str";" );
echo $str;
?>

Результатом выполнения этого кода будет:

This is a $string with my $name in it.This is a cup with my coffee in it.

Статус подключений

О статусе подключений

Внутренне PHP имеет три статуса подключения:

0 - NORMAL;
1 - ABORTED (прервано пользователем);
2 - TIMEOUT (истеклож время ожидания ответа).

При нормальном выполнении сценария активно состояние NORMAL.
Если во время загрузки страницы пользователь нажал кнопку STOP, активным становится состояние ABORTED.
Если сценарий выполняется дольше отведенного ему времени, устанавливается флаг состояния TIMEOUT.
Возможно определить, как должен вести себя сценарий в зависимости от этих условий.
Если требуется, чтобы сценарий продолжал свое выполнение при разрыве соединения пользователем, нужно установить в файле конфигурации значение параметра ignore_user_abort = 1 (это также можно сделать в файлах конфигурации Apache). Можно также воспользоваться функцией ignore_user_abort().
В противном случае, сценарий завершается.
Чтобы игнорировать завершение сценария таймером, необходимо использовать функцию set_time_limit().

Если функцией register_shutdown_function() была установлена функция "запускаемая при завершении сценария",
то, вне зависимости от статуса подключения, она будет исполнена перед тем, как сценарий завершится. И в "завершающей" функции можно будет выяснить (с помощью функции: connection_aborted(),
connection_timeout() и connection_status()), был ли сценарий завершен нормально или досрочно.

connection_aborted

Определения разрыва подключения пользователем.
Синтаксис:

int connection_aborted(void);

Функция connection_aborted() возвращает true, если подключение было разорвано пользователем

connection_status

Определения статуса подключения.
Синтаксис:

int connection_status(void);

Возвращает значение битового поля, позволяющее выяснить в "завершающей" функции, был ли сценарий завершен досрочно и причину этого. Например, если возвращается 3 (ABORTED | TIMEOUT),
то это означает, что время выполнения истекло, а также то, что пользователь отказался от загрузки страницы.
Если возвращается 0 (то есть значение NORMAL), то это означает, что выполнение сценария не было прервано

connection_timeout

Определения наступления тайм-аута.

Синтаксис:

int connection_timeout(void);

Возвращает true, если время выполнения сценария истекло.

ignore_user_abort

Прерывание сценария при разрыве подключения.

Синтаксис:

int ignore_user_abort([int setting]);

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

register_shutdown_function

Устанавливает функцию, которая будет выполнена при завершении.

Синтаксис:

int register_shutdown_function(string func);

Регистрирует функцию с именем func в качестве функции, запускаемой после завершения сценария.

Заметьте: так как после завершения функции никакие средства вывода недоступны, это делает для функции, зарегистрированной в качестве "завершающей", недоступными обычные средства отладки, такие команды как print или echo.

Другие функции

get_browser

Определение возможностей браузера.

Синтаксис:

object get_browser([string user_agent]);

Возвращаемая информация извлекается из файла browscap.ini. Для определения браузера используется значение переменной $HTTP_USER_AGENT или значение, содержащееся в аргументе user_agent.

Информация возвращается в виде свойств объекта и отражает возможности клиентского браузера (например, версию, поддерживает ли он javascript или cookies).

<?php
function list_array($array) {
while (list ($key, $val) == each ($array)) {
$str.= "<b>$key:</b> $val<br>n";
}
return $str;
}
echo "$HTTP_USER_AGENT<hr>";
$bouser = get_browser();
echo list_array ((array) $browser);
?>

Содержимое возможного вывода:

Mozilla/4.5 [en] (X11: Linux 2.2.9 i586)<hr>
<b>browser_name_pattern:</b>Mozilla/4.5.<br>
<b>parent:</b>Netscape<br>
<b>platform:</b>Unknown<br>
<b>majorver:</b>4<br>
<b>minorver:</b>5<br>
<b>browser:</b>Netscape<br>
<b>version:</b>4<br>
<b>frames:</b>1<br>
<b>tables:</b>1<br>
<b>cookies:</b>1<br>
<b>backgroundsounds:</b> <br>
<b>vbscript:</b> <br>
<b>javascript:</b>1<br>
<b>javaapplets:</b>1<br>
<b>activexcontrols:</b> <br>
<b>beta:</b> <br>
<b>crawler:</b> <br>
<b>authenticodeupdate:</b> <br>
<b>msn:</b> <br>

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

unserialize

Создает PHP значение из сохраненного представления.

Синтаксис:

mixed unserialize(string str);

unserialize() берет одно сохраненное значение и преобразует обратно в PHP значение. Возвращает преобразованное значение, и может иметь тип: integer, double, string, array или object. Если был преобразован object, то методы не востановятся.

Пример:

// Здесь мы используем unserialize() для загрузки
данных о сессии из базы данных
// в $session_data. Этот пример дополняет
описанный в месте
// с serialize().
$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
"SELECT data FROM sessions WHERE id =?");
$sqldata = array($PHP_AUTH_USER);
if (!odbc_execute($stmt, &$sqldata) ||
!odbc_fetch_into($stmt, &$tmp)) {
// Если сбой запуска или выборки,
// то инициализируем массив
$session_data = array();
} else {
// Мы должны иметь представление в $tmp[0].
$session_data = unserialize($tmp[0]);
if (!is_array($session_data)) {
// Что-то неправильно, инициализируем массив
$session_data = array();
}
}

uniqid

Генерирует уникальный идентификатор.

Синтаксис:

int uniqid(string prefix [, boolean lcg]);

Функция uniqid() возвращает уникальный идентификатор, основанный на текущем времени в микросекундах и имеющий префикс prefix. Префикс может быть полезен, например, если Вы генерируете идентификаторы одновременно на отдельных хостах, которые, могли бы случилось, генерировали идентификатор в одной и той же микросекунде. Префикс может быть длиной до 114 символов. Если в качестве его значения передается пустая строка, то длина сгенерированного идентификатора будет 13 символов (при lcg=true - 23 символа).

Если указан необязательный аргумент lcg со значением true, к концу идентификатора будет добавляться "комбинированный хеш энтропии LCG", делающий его значение более уникальным.

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

// без случайной части
$token = md5(uniqid(""));
// посложнее
$better_token = md5(uniqid(rnad()));

Эти строки генерируют 32 байта (128-битное шестнадцатеричное число): они обладают максимальной унакальностью, которая только может потребоваться

highlight_file

Вывод содержимого файла с цветовой разметкой.

Синтаксис:

boolean highlight_file(string filename);

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

Возвращает true или false при ошибке.

Например, чтобы заставить сервер Apache при получении запроса с URL, содержащего значение вида
"http://имя.сервера/source/путь/к/файлу.php", выводит листинг файла
"http://имя.сервера/source/путь/к/файлу.php", сделайте следующее. Добавьте в файл httpd.conf следующий фрагмент:

# Используем директиву "ForceType" чтобы указать,
# что значение source в URL - не каталог, а имя сценария PHP
<Location /source>
ForceType application/x-httpd-php
</Location>

Создайте в корневом web-каталоге следующий файл с именем source:

<HTML><HEAD>
<TITLE>Source Display</TITLE>
</HEAD>
<BODY bgcolor=#FFEEDD>
<?php$script = getenv ("PATH_TRANSLATED");
if(!$script) {
echo "<BR><B>ERROR: Укажите имя сценария</B><BR>";
} else {
if(ereg("(.php|.inc)$",$script)) {
echo "<H!>Листинг файла: $PATH_INFO</H1>n<hr>n";
if(!@highlight_file($script))
echo "Ошибка вывода файла";
} else {
echo "<H1>ERROR: Показываются только листинги PHP файлов </H1>";
}
}
echo "<HR>Распечатано: ".date("Y/M/d H:i:s",time());
?>
</BODY>
</HTML>

highlight_string

Выделение строки цветом.

Синтаксис:

void highlight_string(string str);

Функция действует подобно highlight_file(), но использует не содержимое файла, а указанной строки.

show_source

Синоним функции highlight_file.

Синтаксис:

boolean show_source(string str);

pack

Пакетирование данных в двоичную строку.

Синтаксис:

string pack(string format [,mixed $args,...]);

Функция pack() упаковывает заданные аргументы в бинарную строку, которая затем и возвращается. Формат параметров, а также их количество, задается при помощи строки $format, которая представляет собой набор однобуквенных спецификаторов форматирования - наподобие тех, которые указываются в sprintf(), но только без знака %. После каждого спецификатора может стоять число, которое отмечает, сколько информации будет обработано данным спецификатором. А именно, для форматов a,A,h и H число задает, какое количество символов будет помещено в бинарную строку из тех, что находится в очередном параметре-строке при вызове функции (то есть, определяет размер поля для вывода строки).

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

Вот полный список спецификаторов формата:

a - строка, свободные места в поле заполняются символом с кодом 0;
A - строка, свободные места заполняются пробелами;
h - шестнадцатиричная строка, младшие разряды в начале;
H - шестнадцатиричная строка, старшие разряды в начале;
c - знаковый байт (символ);
C - без знаковый байт;
s - знаковое короткое целое (16 битов порядок байтов определяется архитектурой процессора);
S - беззнаковое короткое число;
n - беззнаковое целое (16 битов, старшие разряды в конце);
v - беззнаковое целое (16 битов, младшие разряды в конце);
i - знаковое целое (размер и порядок байтов определяется архитектурой);
I - беззнаковое целое;
l - знаковое длинное целое (32 бита, порядок знаков определяется архитектурой);
L - беззнаковое длинное целое;
N - беззнаковое длинное целое (32 бита, старшие разряды в конце);
V - беззнаковое целое (32 бита, младшие разряды в конце);
f - число с плавающей точкой (зависит от архитектуры);
d - число с плавающей точкой двойной точности (зависит от архитектуры);
x - символ с нулевым кодом;
X - возврат назад на 1 байт;
@ - заполнение нулевым кодом до заданной абсолютной позиции.

// Целое, целое, все остальное - сиволы
$bindata = pack("nvc", 0x1234, 0x5678, 65, 66);

После выполнения приведенного кода в строке $bindata будет содержаться 6 байтов в такой последовательности:
0x12, 0x34, 0x78, 0x56, 0x41, 0x42 (в шестнадцатиричной системе счисления).

unpack

Распаковывает данные из двоичной строки.

Синтаксис:

array unpack(string format, string data);

Распаковывает данные из двоичной строки в массив согласно формату. Возвращает массив, содержащий распакованные элементы.

$array = unpack("c2chars/nint", $binarydata);

Возникающий в результате массив будет содержать "chars1", "chars2" и "int".

iptcparse

Анализирует двоичный IPTC блок на одиночные тэги.

Синтаксис:

array iptcparse(string iptcblock);

Эта функция анализирует двоичный блок IPTC на одиночные теги. Возвращает массив, использующий tagmarker как индекс и значение как значение. Возвращает false при ошибке или если никаких IPTC данных не было найдено

leak

Имитация утечки памяти.

Синтаксис:

void leak(int bytes);

leak() отсекает определенный объем памяти.

Это полезно при отладке диспетчера памяти, который автоматически очищает "отсеченную" память при выполнении запроса.

Размер блока памяти указывается в байтах аргументом bytes

serialize

Генерирует удобохраниемое представление значения.

Синтаксис:

string serialize(mixed value);

serialize() возвращает строку состоящую из потока байтов при представлении значения value, которое может где-нибудь сохранено.

Это полезно для сохранения или передачи значений PHP без потери их типа и структуры.

Пример:

//$session_data содержит многомерный массив
с информацией о сессии
//текущего пользователя. Мы используем
serialize() для сохранения
//этого в базе данных в конце запроса.$conn = odbc_connect("webdb", "php", "chicken");
$stmt = odbc_prepare($conn,
"UPDATE sessions SET data =? WHERE id =?");
$sqldata = array(serialize($session_data),
$PHP_AUTH_USER);
if (!odbc_execute($stmt, &$sqldata)) {
$stmt = odbc_prepare($conn,
INSERT INTO sessions (id, data) VALUES(?,?)");
if (!odbc_execute($stmt, &$sqldata)) {
/ Что-то сделано неправильно. /
}
}

К содержанию


Источник: http://php.info-kna.ru/part/12/


Поделись с друзьями



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Портал по PHP, MySQL и другим веб-технологиям, Форум PHP программистов Есенин простой стих

Сценарий for php Сценарий for php Сценарий for php Сценарий for php Сценарий for php Сценарий for php Сценарий for php Сценарий for php

ШОКИРУЮЩИЕ НОВОСТИ