Ну вы же делаете fork в инит-скрипте N раз, который «запускает» N форков. Вот, для каждого из этих форков и происходит перенаправление вывода в свой файл. В итоге, у вас получится N файлов, каждый с выводом одного форка.
Вот модифицированный код, который иллюстрирует написанное:
<?php
function bkg(){
$childPid = pcntl_fork();
if ($childPid == 0) {
} elseif($childPid != -1) {
$pid = getmypid();
echo 'iam child, out to cli, my pid is ' . $pid . PHP_EOL;
fclose(STDOUT);
$STDOUT = fopen("log." . $pid . ".out", "wb");
echo 'out to log.out, my pid is ' . $pid . PHP_EOL;
}
}
bkg();
bkg();
bkg();
echo 'iam parent, out to cli, my pid is ' . getmypid() . PHP_EOL;
?>
К сожалению, мой опыт говорит об обратном: мало кому известны все возможные способы, хотя бы просто списком, без деталей и нюансов. То же касается и гугления: чаще всего рекомендуют юзать сигналы и сокеты, варианты с БД и APC, про разделяемую память упоминают редко, а семафоры, очереди сообщений и pthreads и подавно.
Потому, было решено собрать всё воедино, чтобы новички какраз и знали, что есть и с чего можно начать. К сожалению, с понятными примерами тоже не всё гладко: все эти технологии в контексте PHP так или иначе описаны на php.net и других интернетах с достаточным количеством приветмиров, а что то сложное городить — так новичкам будет сложно понять всю магию, а тем к то в теме оно и не надо. Так что, я рекомендую ознакомиться со всем, это не займёт много времени, а дальше углубляться в изучение выбранного направления.
Тов. KAndy и lexdevel: целью заметки было описать решения и подходы, а не готовые продукты (за исключением pthreds), в контексте PHP для самостоятельного велосипедостроительства. Информация о 0mq, thrift и ещё куче подобны вещей гуглится сразу же, и не зря они небыли упомянуты, равно как и rmq, phpDaemon, nanoserv, ratchet, и ещё очень много других.
Собирал как то лазер по второй схеме, сам лазер выдрал из старого двд-привода. Классная штука получилась.
Любознательным: существуют сайты данной тематики, не поленитесь там почитать правила ТБ при сборе, тестировании и калибровке оптики. А то многие начинающие лазерособиратели потом горько жалели… (иходя из данных этих же сайтов).
Хэши обоих алгоритмов необратимы, дешифрованием md5 никто не занимается: входящий пароль шифруют так же и сравнивают с тем, что есть в базе. С bcrypt'ом то же самое. В конце концов, пхпшники юзают встроенную функцию для получения md5-хэша, а для bcrypt можно собрать свой пакет с заданными настройками, чтобы из кода скрипта не было видно, что вы туда передаёте, только лишь строку. Сломать такое будет сложнее, чем просто утащить скрипт с мд5+соль.
Тут стоит вопрос «не как вычислить», а насколько криптостойким будет хэш, когда уже «всё пропало».
В данном случае, алгоритм применяемой битовой маски можно умыкнуть с сервера вместе с БД. А bcrypt — сам в себе. Т.е., из-за меньшего количества действующих способов взлома и, что немаловажно, их продуктивности, последний потенциально более безопасен, чем мд5+соль.
Если хацкирь заимел соль и md5-хэши, то профит он поимеет весьма приличный. Иной бы была ситуация при использовании bcrypt.
Не модно юзать такую связку на сайтах типа mysql.com и php.net. Хоть в последнем случае, взлом был осуществлён не через sql inj, но тем не менее, данные БД уплыли. А что там, в этих данных? Правильно. md5-хэши паролей, расшифровав которые можно получить доступ сами_знаете_к_чему, что будет будоражить умы многих.
Поясню свою мысль детальнее: конечно же, слитая база какой то файлопомойки или бложика вызовет только баттхёрт у хомячков и излишние волнения «масс», но вот когда кто то получает доступ к таким серьёзным структурам, примеры коих я привёл выше, вопрос о надёжности хэшей паролей не даёт админам ночами спать.
Представьте аналогичную ситуацию с любой действительно влиятельной и крупной организацией. Когда слитая база грозит чем то большим, чем чтение кем то ваших писем или просмотром истории скачек порнушки на трекере. Тогда и придёт понимание важности вопроса о надёжности используемой хэш-функции.
Да, кстати, немаловажный фактор: md5 стар и популярен, его юзают очень многие, а значит, и разработки методов по «обходу» этого алгоритма тоже ведутся длительное время, и весьма продуктивно. Вспомним словари, каждодневно обновляемые, радужные таблицы и иные алгоритмы атаки.
P.S. Тьюринг как то напевал песенку: «В напиток яблоко макнешь и навеки ты уснешь». В возрасте 42 лет он окунул яблоко в раствор цианида и несколько раз откусил. md5 — это яблоко, ваша уверенность в надёжности этого алгоритма — цианид, в который злоумышленник будет его макать, а каждый пароль — это откушенный вами кусочек от этого яблока.
Хоть это и не относится к теме DOM Events, но всё же добавлю: большинство браузеров имеют параметры, которые позволяют запустить их в полноэкранном режиме. Например, для IE это "-k":
iexplore.exe -k
либо, если необходимо открыть сразу с необходмой страницей (в том числе, локальным файлом)
iexplore.exe -k "http://www.google.com"
Одним из проектов было создание анкеты для использования её на устройствах с тач-скринами, вот там и пригодилась такая возможность: при загрузке ОС Опера стартовала сразу в полноэкранном режиме с открытой страничкой анкеты.
Обычно подобные вещи пишут в личку автору, а не в комментариях к топику. Но то такое.
На LM можно почитать раздел «За что на хабре обычно минусуют», многим комментаторам будет полезно.
Тут находится последняя версия Document Object Model Level 3 Events Specification. По ссылке откроется пункт 5.5.1, в котором приведена сводная таблица событий. Любознательные могут сравнить документ с предыдущей версией от 8 сентября 2009.
Любопытны несколько новых событий модуля MouseEvents — mouseenter и mouseleave, что может стать полезным для всякого рода RIA, и новый модуль WheelEvent с пока единственным событием wheel.
Помимо прочего, добавлены CompositionEvent и FocusEvent.
Знаю про DOM 3, но читал о нём только в документах W3C. На сайте Мозиллы есть табличка, кратко описывающая DOM 2 и DOM 3, и списки их событий.
Если найду материал — обязательно напишу.
Вот модифицированный код, который иллюстрирует написанное:
Потому, было решено собрать всё воедино, чтобы новички какраз и знали, что есть и с чего можно начать. К сожалению, с понятными примерами тоже не всё гладко: все эти технологии в контексте PHP так или иначе описаны на php.net и других интернетах с достаточным количеством приветмиров, а что то сложное городить — так новичкам будет сложно понять всю магию, а тем к то в теме оно и не надо. Так что, я рекомендую ознакомиться со всем, это не займёт много времени, а дальше углубляться в изучение выбранного направления.
Или можно в дочернем процессе создавать лог-файл и вместо echo\print использовать файловые функции, это более предпочтительный вариант.
Любознательным: существуют сайты данной тематики, не поленитесь там почитать правила ТБ при сборе, тестировании и калибровке оптики. А то многие начинающие лазерособиратели потом горько жалели… (иходя из данных этих же сайтов).
В данном случае, алгоритм применяемой битовой маски можно умыкнуть с сервера вместе с БД. А bcrypt — сам в себе. Т.е., из-за меньшего количества действующих способов взлома и, что немаловажно, их продуктивности, последний потенциально более безопасен, чем мд5+соль.
Не модно юзать такую связку на сайтах типа mysql.com и php.net. Хоть в последнем случае, взлом был осуществлён не через sql inj, но тем не менее, данные БД уплыли. А что там, в этих данных? Правильно. md5-хэши паролей, расшифровав которые можно получить доступ сами_знаете_к_чему, что будет будоражить умы многих.
Поясню свою мысль детальнее: конечно же, слитая база какой то файлопомойки или бложика вызовет только баттхёрт у хомячков и излишние волнения «масс», но вот когда кто то получает доступ к таким серьёзным структурам, примеры коих я привёл выше, вопрос о надёжности хэшей паролей не даёт админам ночами спать.
Представьте аналогичную ситуацию с любой действительно влиятельной и крупной организацией. Когда слитая база грозит чем то большим, чем чтение кем то ваших писем или просмотром истории скачек порнушки на трекере. Тогда и придёт понимание важности вопроса о надёжности используемой хэш-функции.
Да, кстати, немаловажный фактор: md5 стар и популярен, его юзают очень многие, а значит, и разработки методов по «обходу» этого алгоритма тоже ведутся длительное время, и весьма продуктивно. Вспомним словари, каждодневно обновляемые, радужные таблицы и иные алгоритмы атаки.
P.S. Тьюринг как то напевал песенку: «В напиток яблоко макнешь и навеки ты уснешь». В возрасте 42 лет он окунул яблоко в раствор цианида и несколько раз откусил. md5 — это яблоко, ваша уверенность в надёжности этого алгоритма — цианид, в который злоумышленник будет его макать, а каждый пароль — это откушенный вами кусочек от этого яблока.
iexplore.exe -k
либо, если необходимо открыть сразу с необходмой страницей (в том числе, локальным файлом)
iexplore.exe -k "http://www.google.com"
Одним из проектов было создание анкеты для использования её на устройствах с тач-скринами, вот там и пригодилась такая возможность: при загрузке ОС Опера стартовала сразу в полноэкранном режиме с открытой страничкой анкеты.
На LM можно почитать раздел «За что на хабре обычно минусуют», многим комментаторам будет полезно.
Любопытны несколько новых событий модуля MouseEvents — mouseenter и mouseleave, что может стать полезным для всякого рода RIA, и новый модуль WheelEvent с пока единственным событием wheel.
Помимо прочего, добавлены CompositionEvent и FocusEvent.
Если найду материал — обязательно напишу.