Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
sashok991
19 / 19 / 5
Регистрация: 26.12.2013
Сообщений: 158
#1

Чтение данных из консоли

12.02.2018, 12:30. Просмотров 157. Ответов 3
Метки нет (Все метки)

Добрый день.
Помогите пожалуйста со следующей проблемой.

Есть сервер на php в бесконечном цикле. Я использовал следующий код для получения данных из консоли.
PHP
1
2
3
4
5
6
7
8
9
if(defined('STDIN')){
                $line = trim(fgets(STDIN)); // читает одну строку из STDIN
                print_r($line);
                switch($line){
                    case 'exit':
                        $this->is_run = false;
                        break;
                }
            }
В итоге сервер зависает в ожидании строки из консоли.
Помогите пожалуйста переписать код так, что бы сервер не ожидал введенных данных, а просто проверял была ли введена строка в консоль и если да, то обрабатывал ее. В противном случае продолжал бы работу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2018, 12:30
Ответы с готовыми решениями:

Чтение данных из текстового файла
Подскажите как считать с текстового файла последних десять строчек если если...

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -> Vehicles -> Firetruck_0...

Чтение данных из массива
Доброго времени суток! Я знаю, что эта тема давно обмусолена, но мне до сих...

Чтение данных постранично
Привет. Один магазин предоставляет API для получения списка счетов. Но есть...

Чтение данных из формы
Если форма передаётся на обработку в стороний РНР фаил то доступ её данным...

3
полудух
145 / 161 / 42
Регистрация: 15.03.2016
Сообщений: 987
12.02.2018, 15:19 #2
погуглите php demon stdin
0
andr-xw
121 / 76 / 32
Регистрация: 05.03.2013
Сообщений: 447
12.02.2018, 16:08 #3
Если поддержка венды не нужна, то вот:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
function getStdIn() {
    $read = ['stdin' => STDIN];
    $write = [];
    $except = [];
 
    $result = stream_select($read, $write, $except, 0, 100);
 
    if ($result === false) {
        throw new Exception('stream_select failed');
    }
 
    return ($result > 0) ? trim(fgets(STDIN)) : '';
}
Но в винде работать не будет, венда считает STDIN всегда доступным для чтения, даже если читать там нечего.

P.S. Хотя возможно у меня просто windows-среда криво настроена.
1
sashok991
19 / 19 / 5
Регистрация: 26.12.2013
Сообщений: 158
12.02.2018, 21:48  [ТС] #4
Цитата Сообщение от полудух Посмотреть сообщение
погуглите php demon stdin
Не хочу работать с PCNTL по причине перекомпиляции php движка. Других вариантов в нэте не нашел.

Цитата Сообщение от andr-xw Посмотреть сообщение
Но в винде работать не будет, венда считает STDIN всегда доступным для чтения, даже если читать там нечего.
Винда - говно! Жалко конечно, разработку веду именно в винде ). За код спасибо, посмотрю, как будет работать на UNIX.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2018, 21:48

Чтение JSON и вывод данных
Собственно есть файл: { "result": { "items": } Подскажите...

Чтение данных из текстового поля
Добрый день. У меня возникла проблема на старте изучения пхп. Не читаются...

Чтение данных из многострочного поля!
Доброе время суток! Занимаясь с учебником, возник вопрос (погуглил, ответа не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru