All streams
Search
Write a publication
Pull to refresh
32
0
Александр @not_your_personal_coder

Пользователь

Send message
Пардон, очепятался, так правильно:

Скрытый текст
<?php

function bkg(){
    $childPid = pcntl_fork();

    if ($childPid == 0) {
        $pid = getmypid();
        echo 'iam child, out to cli, my pid is ' . $pid . PHP_EOL;
        fclose(STDOUT);
        $STDOUT = fopen("log." . $pid .  ".out", "wb");
        echo 'iam child, out to log.' . $pid .  '.out, my pid is ' . $pid . PHP_EOL;
    } elseif($childPid != -1) {
   } 
}

bkg();
bkg();
bkg();

echo 'iam parent, out to cli, my pid is ' . getmypid() . PHP_EOL;

?>
Ну вы же делаете 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 и других интернетах с достаточным количеством приветмиров, а что то сложное городить — так новичкам будет сложно понять всю магию, а тем к то в теме оно и не надо. Так что, я рекомендую ознакомиться со всем, это не займёт много времени, а дальше углубляться в изучение выбранного направления.
Вариант с перенаправлением потока вывода:

function bkg(){
    $childPid = pcntl_fork();
    if ($childPid == 0) {
    } elseif($childPid != -1) {
        echo 'out to cli';
        fclose(STDOUT);
        $STDOUT = fopen("log." . getmypid() .  ".out", "wb");
        echo 'out to log.out';
   }
}

bkg();


Или можно в дочернем процессе создавать лог-файл и вместо echo\print использовать файловые функции, это более предпочтительный вариант.
Да, верно, совсем вылетело из головы. Расширение POSIX, функция posix_mkfifo
Тов. KAndy и lexdevel: целью заметки было описать решения и подходы, а не готовые продукты (за исключением pthreds), в контексте PHP для самостоятельного велосипедостроительства. Информация о 0mq, thrift и ещё куче подобны вещей гуглится сразу же, и не зря они небыли упомянуты, равно как и rmq, phpDaemon, nanoserv, ratchet, и ещё очень много других.
Почему у меня не тормозит? DHD, 1.72.
Тут есть интересный материал про bcrypt, MD5, SHA1 и CUDA.
Собирал как то лазер по второй схеме, сам лазер выдрал из старого двд-привода. Классная штука получилась.

Любознательным: существуют сайты данной тематики, не поленитесь там почитать правила ТБ при сборе, тестировании и калибровке оптики. А то многие начинающие лазерособиратели потом горько жалели… (иходя из данных этих же сайтов).
Хэши обоих алгоритмов необратимы, дешифрованием 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 можно почитать раздел «За что на хабре обычно минусуют», многим комментаторам будет полезно.
И никнейм автора — idkfa
Тут находится последняя версия 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, и списки их событий.
Если найду материал — обязательно напишу.
2

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Registered
Activity