Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> php через консоль, как ввести переменную? 
V
    Опции темы
Валерия
Дата 15.10.2008, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: 3
Всего: 8



Собственно нужно передать с консоли переменную в php
Говорили рыть в сторону php://STDIN  но ничего не нашла нужного)
Нужно что бы банально после php -f 1.php меня спросило ввести переменную, и её после этого вывело)
Денвер стоит.

Это сообщение отредактировал(а) Валерия - 15.10.2008, 23:43
PM MAIL   Вверх
awers
Дата 16.10.2008, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



php.exe -f 1.php?a=blah&b=dubleblah ?
PM MAIL WWW ICQ Skype   Вверх
sTa1kEr
Дата 16.10.2008, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Код

if (PHP_SAPI != 'cli')
{
    define('STDIN', fopen('php://stdin', 'r'));
    define('STDOUT', fopen('php://stdout', 'w'));
}

$var = '';

fwrite(STDOUT, 'Enter you value: ');
while (($char = fgetc(STDIN)) != "\r")
{
    $var .= $char;
}
fwrite(STDOUT, "You entered '".$var."'\n");

Прямо ностальгия по самым первым урокам BC++ ~3.0  smile
PM MAIL   Вверх
Валерия
Дата 16.10.2008, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: 3
Всего: 8



sTa1kEr, спасибо! достаточно было
Код

$fp = fopen('php://stdin', 'r');
$var = fgets($fp);
echo $var;

smile
PM MAIL   Вверх
sTa1kEr
Дата 16.10.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Валерия @  16.10.2008,  14:26 Найти цитируемый пост)
$fp = fopen('php://stdin', 'r');

Да, только если вы работаете через cli, то поток можно не открывать, а сразу использовать константу STDIN, т.к. он открывается автоматически и всегда доступен. То же самое относится и к STDOUT.

Цитата(Валерия @  16.10.2008,  14:26 Найти цитируемый пост)
$var = fgets($fp);

Да, так даже правильнее smile 

Цитата(Валерия @  16.10.2008,  14:26 Найти цитируемый пост)
echo $var;

Только стоит учитывать, что это не тоже самое, что и fwrite(STDOUT, ...); При использовании echo весь вывод идет через ob_handler, а во втором случае вывод идет напрямую в stdout.
По этому, при выводе через echo данные могут выводится порциями, с задержкой и преобработкой. А через fwrite всегда "as is" и сразу. По этому напрямую обычно предпочтительнее, особенно если надо выводить, к примеру, прогресс работы скрипта:
Код

for ($i = 0; $i <= 100; $i++)
{
   usleep(100000); 
   fwrite(STDOUT, "\rCompleted $i%"); // Гарантированно будет менятся само число
}
fwrite(STDOUT, "\n");


PM MAIL   Вверх
Валерия
Дата 16.10.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: 3
Всего: 8



А вот есть такая замечательная программка как php2exe )
Пишет что supplied argument is not valid stream resurce если запускаю твой код в ней.
В обычном вызове через php -f 1.php - всё норм.
PM MAIL   Вверх
sTa1kEr
Дата 16.10.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Валерия @  16.10.2008,  18:15 Найти цитируемый пост)
А вот есть такая замечательная программка как php2exe )

Запусти в этой програмке:
Код

var_dump(PHP_SAPI);

PM MAIL   Вверх
Валерия
Дата 16.10.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: 3
Всего: 8



Код

string(3) "cli"

 smile

Добавлено через 2 минуты и 3 секунды
Причём fwrite(STDOUT работает нормально, но ничего не спрашивает при fgets(STDIN)

Это сообщение отредактировал(а) Валерия - 16.10.2008, 18:11
PM MAIL   Вверх
sTa1kEr
Дата 16.10.2008, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Цитата(Валерия @  16.10.2008,  19:10 Найти цитируемый пост)
string(3) "cli"

В таком случае, я бы поосторожнее такой прогрмкой пользовался. Если у нее уж в таких базовых вещах баги, то кто знает к чему она может привести со сколько-нибудь более сложны м кодом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0501 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.