Pull to refresh
55
0
Саша Сафронов @safron

User

Send message
Отличная библиотека! Обязательно попробую в использовании.

Небольшое занудное замечание:
привязывается, как текстовое поле с событием 'keyup'

— не отработает, если нажать правую кнопку мыши и выбрать «Paste»

привязывается, как чекбокс с событием 'click'

— не отработает, если ставить/снимать отметку пробелом
Тащем та, автор публикации уже подсказал годный для меня способ выше, но и Вам спасибо за участие!
Спс за инфо.

Дело в том, что у меня немного другой кейс. Поясню. Мне нужно запускать не воркеры, а несколько сторонних скриптов в качестве демонов. Запускающий скрипт вызывается паппетом при старте системы (я юзаю вагрант). При этом, как я уже упоминал, у меня нет возможности настроить вывод в лог в самих этих скриптах, я могу править только сам вызывающий скрипт. Что самое досадное, когда я логинюсь через SSH в систему и запускаю стартующий скрипт из консоли, то и он и запускаемые скрипты работают без проблем, а вот когда запуск идет при старте системы, сторонние скрипты слетают (возможно, какие-то сервисы вроде редиса на тот момент еще не готовы, или еще что-то подобное). Исходя из этого мне и потребовалось узнать, что они там такое пишут в STDOUT и STDERR. Просто чтобы выяснить, откуда ноги растут.
ага, я про то же ниже :)

еще раз спасибо!
Вы во всем правы, единственное, путаете местами секции if.

pcntl_fork() возвращает 0 именно в дочернем процессе, я попробовал переместить Ваш код в нужную секцию и все заработало как надо:
function bkg($executable, $args){
    $childPid = pcntl_fork();
    if ($childPid == 0) {
        posix_setsid();
        fclose(STDOUT); // в манах говорится, что необходимо закрыть поток стд. вывода
        fclose(STDERR); // и ошибок
        $pid = getmypid();
        $STDOUT = fopen("log." . $pid .  ".out", "wb");
        echo 'out to log.out, my pid is ' . $pid . PHP_EOL;
        pcntl_exec($executable, $args);
    } elseif($childPid != -1) {
        $pid = getmypid();
        echo 'i am still parent, out to cli, my pid is ' . $pid . PHP_EOL;
    }
}

bkg('/usr/bin/php', ['/domains/manuals.dev/script/tmp-child.php']);

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


Спасибо большое за наводку! (Я не знал, что существует еще и некая глобальная переменная $STDOUT)
Тут есть такой момент, что сам вызывающий скрипт не должен быть демоном, он стартует, запускает процессы и сразу завершается. А код вызываемых процессов, я менять не могу.
Хм, насколько я понял, данный код перенаправит вывод самого инит-скрипта, а необходимо перенаправить вывод именно вызываемых (при этом, к сожалению, я не имею возможности менять код вызываемых). Сработает этот прием, если переместить его обратно в секцию if ($childPid == 0)?
Сорри, что не [совсем] по теме, но меня мучает один вопрос, на который не смог сходу найти ответ, а сюда, прозреваю, заглянут хорошо разбирающиеся в вопросе люди. Суть вот в чем: у меня есть некий инит-скрипт, который запускается при старте системы и призван запустить несколько других скриптов в демон-режиме. Я использую примерно такой код:
function bkg($executable, $args = []) {
    $childPid = pcntl_fork();
    if ($childPid == 0) {
        posix_setsid();
        fclose(STDOUT); // в манах говорится, что необходимо закрыть поток стд. вывода
        fclose(STDERR); // и ошибок
        pcntl_exec($executable, $args);
    } elseif($childPid != -1) {
        return true;
    }
    return false;
}


мне же в целях отладки надо перенаправить вывод запущенных процессов в какой-нибудь файл. Подскажите, плиз, как это можно сделать?
А можно все же чуть поподробнее, если не трудно (а то готовых примеров нигде не найти)? Вот для самой простейшей задачи, скажем: есть ардуино и к нему подключен единственный датчик температуры. Что должно быть загружено в само ардуино? Как с ним соединяться и считывать эти данные?
Ну ок. Значит, перепутал. Прошу прощения, если кого-то ввел в заблуждение.

По теме: может быть вы вкратце расскажете, что входит в «more powerful run-time support»?
Хм. А может раньше так было? Не могло ж мне такое само в голову взбрести. Хотя, в пять утра в субботу… :)
В любом случае, спс за инфо!
Однако не стоит забывать, что он включает в этот «экзешник» сам код интерпретатора + байт-код самой программы. Поэтому, по сравнению с «некомпилируемыми» языками, которые тем не менее кешируют байт-код профит не такой очевидный. Обратите внимани, что простой хелловорлд с одной строчкой в скомпилированном виде занимает ~4Мб Впрочем, все это не критично вообще.
И под громким названием «модель» предлагается лепить вручную SQL-запросы, не забывая экранировать параметры.
Вроде бандл для TextMate вполне сносный.
Что ж, весьма компактно. Спасибо! Ждем продолжения.
Вот один из немногих авторов, которого интересно и забавно читать! Две статьи, ничего по сути не содержащие, кроме туманных обещаний, а все равно было круто. Уже прям не терпится чтоб скорей начался экшен! Прозреваю, что автор до конца не трансформируется в «сухого и педантичного ворчуна», и далее будет много лирических оступлений, но оно ж только к лучшему.

Ближе к теме: я как раз решил, что пришло время погрузится в новый язык/технологию (новую для меня, конечно). После некоторых раздумий решил остановится на джаве (все-таки она давно себя зарекомендовала, там и комьюнити, и т.д. и т.п.), но теперь вот подумал, может ну ее, «дворник старый, молодым вперед шагать». К тому же только вот сегодня наткнулся на сайт одного сервиса (не сочтите за рекламу, я не могу сказать про него ничего как хорошего, так и плохого), где есть примеры для разных языков, и я лишний раз задумался, а стоит ли писать столько на Джаве, когда можно писать столько кхм… не на Джаве. Ей богу, пальцы то тоже не казеные :) Кстати, может кому-то из знакомых с Go будет не лень написать пример интеграции того же сервиса для Go, чисто для сравнения?

P.S. Но каков стиль, каков стиль! Я прям завидую. Надо было тоже начинать с юридического образования! :)
да все ж просто: считает достойными только особ полу женскаго
А у меня вот пагинаторы всегда вызывали злость :)
Для себя проблему решил, сделав скроллбар на JS, который позволяет мотнуть резко до самого конца. Соответственно, размер ползунка меняется в зависимости от кол-ва контента.
Да это просто: не придет
Поддерживаю. В то время как одни как только могут пытаются сократить кол-во обращений к серверу, другие наоборот предлагают его увеличить из-за такой ничтожной задачи.

Это как-то вообще нелогично: ведь клиент прекрасно знает, сколько он отправил уже байт, зачем мучать сервер то? Да, все понятно, есть еще IE, но даже там это можно обойти при большом желании (swf, и т.д). Да и IE10, в котором это будет, уже не за горой. Скоро получится так, что все браузеры будут поддерживать это, а в PHP так и останется уйма лишнего функционала, увеличивающего размер и влияющего на быстродействие.

P.S. Да, уж если непременно хочется кому-то через сервер, то расширения было бы вполне достаточно.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity