Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/47: Рейтинг темы: голосов - 47, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 26

Построчный вывод php shell_exec

12.06.2013, 12:26. Показов 9884. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как организовать построчный вывод без буферизации например такого скрипта:
PHP
1
2
3
4
5
<?php
echo "<pre>";
$host = 'google.com';
echo "Full ping output:" . shell_exec('ping -c 4 ' . $host) . "\n</pre>";
?>
нужно чтоб выводилась каждая строка в момент ее исполнения а не как сейчас после ожидания исполнения всех 4х строк выводится весь аутпут.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.06.2013, 12:26
Ответы с готовыми решениями:

Вывод результатов shell_exec – кодировка, локали
Доброго времени суток! Функция shell_exec( ) позволяет выполнить команды оболочки операционной системы. В теме речь идёт о Windows 7,...

MySQLi shell_exec() error
Всем привет! На днях столкнулся с очень плохой проблемой. Мой PHP код на MySQLi для записи информации в базу данных на одном из...

Построчный вывод на экран.
Подскажите, пожалуйста, как правильно реализовать этот скрипт чтобы построчно выводил результат без буферации. &lt;?php ...

19
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
12.06.2013, 12:45
shell_exec возвращает результат выполнения - понимаешь смысл слов "результат выполнения"?
0
0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 26
12.06.2013, 12:48  [ТС]
не вопрос можно через exec

Добавлено через 1 минуту
вообщем вопрос именно как сделать построчный вывод и не важно какох командой исполнения пользоваться, понимаю что может всетаке на аяксе но в нем познаний никаких
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
12.06.2013, 13:16
Походу ты хочешь сделать моментальный вывод данных на экран, не дожидаясь выполнения всего скрипта - запусти это, посмотри, такой эффект нужен?
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
header( 'Content-type: text/html; charset=utf-8' );
echo 'Begin ...<br />';
for( $i = 0 ; $i < 10 ; $i++ )
{
    echo $i . '<br />';
    flush();
    ob_flush();
    sleep(1);
}
echo 'End ...<br />';
0
0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 26
12.06.2013, 13:59  [ТС]
не то мне нужно именно запуск пинга и как он на баше по строчно идет также его выводить.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
12.06.2013, 14:04
mishon32, ping выводит первую строку и ждет сколько-то там времени. Затем выводит еще строку и снова ждет. Т.е. он все это время запущен и выполняется.

shell_exec() ждет полного завершения программы и возвращает только полный результат. Так что shell_exec() тут точно не поможет.

Добавлено через 1 минуту
Разве что отдельно запускать ping несколько раз и каждый раз получать только одну строку.
0
0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 26
12.06.2013, 14:05  [ТС]
так а помогите яже написал мне не принципиально что использовать можно exec() system() не важно главное цтоб выводилось без буферизации а именно помере проверки как на баше так и в браузере, как здесь http://ping.eu/ping/
Спасибо.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
12.06.2013, 14:08
Цитата Сообщение от mishon32 Посмотреть сообщение
так а помогите яже написал мне не принципиально что использовать можно exec() system()
Вы не поняли. Дело не в конкретной функции. Не будет PHP дальше выполнять скрипт, пока не дождется завершения той проги и не получит её результат.

Добавлено через 1 минуту
popen()
0
0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 26
12.06.2013, 14:12  [ТС]
ну я понимаю что может аякс нужно задействовать как это сделать? помогите пожалуйста

Добавлено через 2 минуты
сделал так:
PHP
1
2
3
4
5
6
7
8
9
10
<?php
error_reporting(E_ALL);
 
/* Добавляем перенаправление, чтобы прочитать stderr. */
$handle = popen('ping -c 3 ' . $host, 'r');
echo "'$handle'; " . gettype($handle) . "\n";
$read = fread($handle, 2096);
echo $read;
pclose($handle);
?>

получаю в браузере:
HTML5
1
'Resource id #2'; resource
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
12.06.2013, 14:16
PHP
1
2
3
4
5
6
$p = popen("ping -c 3 127.0.0.1", "r") or die("!popen\n");
while (!feof($p)) {
    var_dump(fgets($p));
}
pclose($p);
echo "done.\n";
Добавлено через 48 секунд
См. также flush()
0
0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 26
12.06.2013, 14:16  [ТС]
выдает все сразу не по шагово по мере выполнения
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
12.06.2013, 14:18
Да даже если Вы будете использовать flush(), браузер имеет право не рендерить полученный ответ сразу же по мере получения очередного куска.
0
0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 26
12.06.2013, 14:20  [ТС]
а как сделать вывод именно как здесь http://ping.eu/ping/ ??
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
12.06.2013, 14:22
Цитата Сообщение от mishon32 Посмотреть сообщение
а как сделать вывод именно как здесь
Используйте отладчик в браузере, вкладке "Сеть/Network":
HTML5
1
2
3
4
5
6
7
8
9
10
11
<script>
var RESULTS = top.document.getElementById( "results" );
RESULTS.innerHTML = "";
</script>
        <script>
        RESULTS.innerHTML += "<span class=\"t1\">--- PING google.ru (195.122.16.24) 56(84) bytes of data. ---</span><br>";
        </script>
        <script>
        RESULTS.innerHTML += "64 bytes from 195.122.16.24: icmp_req=1 ttl=56 time=<span class=\"t2\">38.2</span> ms<br>";
        </script>
...
0
0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 26
12.06.2013, 15:11  [ТС]
решил проблему так
PHP
1
2
3
4
5
6
7
<?php
ob_implicit_flush(true);
ob_end_flush();
echo "<pre>";
system('ping -c 4 www.google.com');
echo "</pre>";
?>
никаких настроек в браузере ненужно делать.
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
12.06.2013, 17:11
Цитата Сообщение от mishon32 Посмотреть сообщение
решил проблему так
И что, висит 4 секунды до получения результата...
0
0 / 0 / 0
Регистрация: 27.08.2012
Сообщений: 26
12.06.2013, 17:36  [ТС]
нет, выдает все по мере выполнения по строчно как в баше.

Добавлено через 3 минуты
нужно в пхп.ини только врубить implicit_flush он
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
12.06.2013, 17:37
У меня на убунте в хроме висит 4 секунды

Добавлено через 43 секунды
Цитата Сообщение от mishon32 Посмотреть сообщение
нужно в пхп.ини только врубить implicit_flush он
а вот в чем дело
0
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 1
28.04.2015, 13:58
Возможно Вам поможет эта статья
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
28.04.2015, 17:41
Цитата Сообщение от ИшТы Посмотреть сообщение
Возможно Вам поможет эта статья

Не по теме:

Возможно Вам стоит смотреть на дату создания темы...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2015, 17:41
Помогаю со студенческими работами здесь

Построчный вывод данных из куков
Привет всем, у меня есть текст в куках как мне брать из него по одной строчке и выводить ее например в другом месте там for или еще что...

Shell_exec(). Обработка результата функции
Привет ! Нужно скомпилировать срр исходник (р.срр) средствами gcc. Делаю так $flag = shell_exec('g++ p.cpp'); if($flag)...

Использование shell_exec() в ubuntu 10.04 (не работает, нужен совет)
И снова вынужден обратиться за помощью: server apache2, php5, на базе ubuntu 10.04 необходимо выполнить консольную команду. использую...

Вывод данных из нескольких таблиц - SQL, (PHP) - PHP
Помогите, пожалуйста:( Выдает ошибку: Column 'title' in field list is ambiguous Структура таблиц следующая: VEGETABLES id...

PDO::lastInsertId и shell_exec()
во время исполнения кода $uId = $pdo-&gt;lastInsertId(`user`); мне прилетает предупреждение &quot;Warning: shell_exec() has been disabled for...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru