Запись в несколько файловых дескрипторов одновременно

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

Решение
Заключите ваш вывод в цикл по файловым дескрипторам, как показано в примере 18.4.

Пример 18.4. pc_multi_fwrite()
function pc_multi_fwrite($fhs,$s,$length=NULL) {
if (is_array($fhs)) {
if (is_null($length)) {
foreach($fhs as $fh) {
fwrite($fh,$s);
}
} else {
foreach($fhs as $fh) {
fwrite($fh,$s,$length);
}
}
}
}

Приведем пример:
$fhs['file'] = fopen('log.txt','w') or die($php_errormsg);$fhs['screen'] = fopen('php://stdout','w') or die($php_errormsg);
pc_multi_fwrite($fhs,'The space shuttle has landed.');

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

function pc_multi_fwrite($fhs,$s) {
if (is_array($fhs)) {
foreach($fhs as $fh) {
fwrite($fh,$s);
}
}
}

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Блокировка файла
Выбор случайной строки из файла
Запись в стандартный поток вывода
Непосредственная модификация файла без временной копии
Обработка каждого слова в файле

Вернуться в раздел: PHP / 18. Файлы