Форум: "Прочее";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];
ВнизКак запустить пакетный (командный) файл (.bat, .cmd) из php ? Найти похожие ветки
← →
SP (2009-04-08 12:55) [0]сабж...
нужно запустить bat (или cmd) файл из php, и нужна возможность отслеживание выполняется ли он или уже выполнился, чтобы не запускать несколько экземпляров одновременно.
← →
test © (2009-04-08 13:13) [1]Взводить переменную в коде? На конец выполнения батника предпринимать действие чтобы php получило событие?
← →
Фыва (2009-04-08 13:35) [2]А батничек будет классический:
@format c:
← →
SP (2009-04-08 13:38) [3]Попробовал запускать через shell_exec()
Но скрипт тогда приостанавливается пока не выполнится батник...
Хотя можно и так оставить. Тогда слежение за выполнением можно и так сделать:
> Взводить переменную в коде?
Вот еще 2 вопроса есть:
1. Можно ли весь вывод в консоль запихнуть в переменную, чтобы я мог ее вывести на страничке?
2. Что касается:
> Взводить переменную в коде?
подскажите как это проще реализовать.
Хотелось бы просто создавать и удалять файлик, или может еще какой-нить способ есть. Но с ПХП я не особо дружу и не знаю как это сделать.
Могу конечно сделать такой флажок в БД (есть под руками Oracle), но ИМХО это как из пушки по воробьям.
← →
SP (2009-04-08 13:41) [4]
> Фыва (08.04.09 13:35) [2]
>
> А батничек будет классический:
> @format c:
Почему всегда здесь у всех какие-то нехорошие подозрения возникают?
Смысл в том, что есть некий батник, который копирует, перемещает файлы и пр.
т.е. пользователи кидают файлы в определенную папку, а затем звонят мне, чтобы я запустил батник...
Дать пользователям самим запускать батник не могу, ибо для этого придется им дать больше прав к некоторым папкам, что не следует делать...
А вот через веб-сервер могло бы получиться неплохо...
т.е. пользователь открывает страничку, нажимает на кнопку, а батник выполняется на сервере и все делает...
← →
@!!ex © (2009-04-08 13:48) [5]> [4] SP (08.04.09 13:41)
> А вот через веб-сервер могло бы получиться неплохо...
Ну так и сделай свой Web Server, повесь его на каком ниьт порту и пускай они к нему обращаються.
А ты на сервере получая запрос уже вообще можешь делать чего хочешь.
P.S.
На готовых компонентах вебсервер пишется за 10 минут. Проверено. Сейчас пользуюсь самописным веб интерфейсом для Download Master.
← →
SP (2009-04-08 13:57) [6]
> Ну так и сделай свой Web Server, повесь его на каком ниьт
> порту и пускай они к нему обращаються.
> А ты на сервере получая запрос уже вообще можешь делать
> чего хочешь.
Если на Дельфи - то написать могу...
Но у меня уже стоит Апач и ПХП. Хотелось бы воспользоваться тем, что имеется.
Как создать и удалить файл нашел
вот пока не могу найти как проверить или файл существует.
← →
test © (2009-04-08 13:57) [7]SP (08.04.09 13:38) [3]
dir c:\ >>dir.txt
← →
SP (2009-04-08 14:03) [8]
> вот пока не могу найти как проверить или файл существует.
Уже нашел... Вроде работает...
> test © (08.04.09 13:57) [7]
>
> SP (08.04.09 13:38) [3]
> dir c:\ >>dir.txt
хм... а в переменную нельзя никак?
хотя в принципе и в файл пойдет...
← →
Anatoly Podgoretsky © (2009-04-08 14:41) [9]> SP (08.04.2009 13:41:04) [4]
A PHP зачем?
← →
test © (2009-04-08 14:42) [10]SP (08.04.09 14:03) [8]
По умолчанию он пишет в стандартный вывод, можно перенаправить хоть куда, но обычно в файл скидывают так проще с ним работать, хоть на prn или con ))
← →
Ega23 © (2009-04-08 14:44) [11]
> Но у меня уже стоит Апач и ПХП. Хотелось бы воспользоваться
> тем, что имеется.
У тебя такая хитрая конфигурация апача, которая не позволяет зпускать cgi? :)))
← →
SP (2009-04-08 16:18) [12]
> У тебя такая хитрая конфигурация апача, которая не позволяет
> зпускать cgi? :)))
Не работал я никогда с cgi
Кстати возникла новая проблема:
if (file_exists("flag.flg"))
{ echo "Нельзя запускать ";}
else
{
$h=fopen("flag.flg","w+");
fclose($h);
$mycmd="post_start.cmd";
shell_exec($mycmd);
if (unlink("flag.flg"))
{ echo "Файл удален"; }
else
{ echo "Ошибка при удалении файла"; };
};
Если апач работает под системной учетной записью, то все нормально запускается, но тоже под SYSTEM. И этот cmd не может создать папку на на расшареном ресурсе другого сервера.
Если же запускаю апач от другого пользователя (с правами администратора), то cmd-шка из ПХП вообще не хочет запускаться.
← →
Ega23 © (2009-04-08 16:23) [13]
> Не работал я никогда с cgi
cgi - суть прогрмма, которой на вход подают Request, а она выдаёт Responce
← →
Ega23 © (2009-04-08 16:24) [14]Судя по тому, что у тебя windows, программа пишется за 5 минут на тех же Delphi.
← →
Ega23 © (2009-04-08 16:26) [15]Очень примитивная cgi:
program CgiVars;
{$APPTYPE CONSOLE}
{$E cgi}
uses
Windows;
const
VarList: array [1..17] of string [30] =
("SERVER_NAME", "SERVER_PROTOCOL",
"SERVER_PORT", "SERVER_SOFTWARE",
"GATEWAY_INTERFACE", "REQUEST_METHOD",
"PATH_TRANSLATED", "HTTP_REFERER",
"SCRIPT_NAME", "PATH_INFO",
"QUERY_STRING", "HTTP_ACCEPT",
"REMOTE_HOST", "REMOTE_USER",
"REMOTE_ADDR", "REMOTE_IDENT",
"HTTP_USER_AGENT");
var
I: Integer;
ReqVar: string;
VarValue: array [0..200] of Char;
begin
writeln("Content type: text/html");
writeln;
// writeln("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//RU">");
writeln("<HTML><HEAD>");
writeln("<TITLE>CGI Variables</TITLE>");
writeln("</HEAD><BODY>");
writeln("<H1>CGI Variables</H1>");
writeln("<HR><PRE>");
for I := Low (VarList) to High (VarList) do
begin
ReqVar := VarList[I];
if (GetEnvironmentVariable (PChar(ReqVar),
VarValue, 200) > 0) then
else
VarValue := "";
writeln (VarList[I] + " = " + VarValue);
end;
writeln("</PRE></BODY></HTML>");
end.
← →
SP (2009-04-08 17:32) [16]
> Ega23 © (08.04.09 16:26) [15]
>
> Очень примитивная cgi:
Хм. Попробовал. понравилось.
Спасибо.
← →
Jeer © (2009-04-08 17:47) [17]Мне, вот просто, инетересно.
Ведь с cgi почти все и начиналось, практически.
Не соврать, 12 лет назад писалась масс серверных cgi-приложений.
Ну да, еще был "начальный" ASP от Микрософт.
Перезагрузка второго поколения "пепси" ?
← →
Ega23 © (2009-04-08 17:58) [18]
> Перезагрузка второго поколения "пепси" ?
Не знаю. Я с веб-прогрммированием только последний год как знаком. Кк раз cgi и fastcgi в голом виде
← →
12 (2009-04-08 18:04) [19]>> Кк раз cgi и fastcgi в голом виде
А мне вообще сложно представить, зачем больше надо
← →
SP (2009-04-08 19:34) [20]Кстати, а можно ли заставить сервер выдавать в браузер информацию "насильно" после определенных writeln ?
Что-то типа пхп-шного flush.
Ибо отрабатывается эта cgi долго, и было бы неплохо таким образом показывать ход выполнения.
← →
atruhin © (2009-04-08 19:54) [21]> [18] Ega23 © (08.04.09 17:58)
> Кк раз cgi и fastcgi в голом виде
А что используешь для FastCGI? Какие библиотеки?
← →
Ega23 © (2009-04-08 20:04) [22]
> Кстати, а можно ли заставить сервер выдавать в браузер информацию
> "насильно" после определенных writeln ?
Нет. Насколько я понимаю - нет. У тебя связь Брузер-сервер создётся каждый раз на запрос. Зпрос - httpRequest. Ушёл на сервер. Всё, что GET - передалось в CGI через пременные оружения. Всё, что POST - передлось в CGI через stdIn. Дальше сервер ждёт, когда этот зпрос будет обработан. Обработался - выдл ответ (в стандарте HTTP). Долго обрабатывется - выдал ответ в стандарте HTTP - по тймауту (настраивается на сервере). И всё.
Т.е. web-сервер, по существу, очень тупая вещь. Получил запрос, проверил его на соответствие стандарту - передал обработку куда-то по URI, дождался ответ, оттранслировал его браузеру. Браузер проверил ответ на соответствие стандарту и дальше сделал что-то.
← →
Ega23 © (2009-04-08 20:08) [23]
> А что используешь для FastCGI? Какие библиотеки?
Я нашёл в сети некую библиотечку libfcgi.dll (с интерфейсным pas-файлом) и модуль для Apache 2.2 (mod_fastcgi-2.4.6-AP22.dll) c описанием, как это в http.conf прикрутить.
А дальше у меня крутился полноценный FastCGI-сервер, всякие коннекты, логика и т.п. В браузер выдвал всё через JSON (крайне удобный формат, учитывая функцию eval() в JavaScript)
← →
SP (2009-04-08 20:21) [24]
> Нет. Насколько я понимаю - нет. У тебя связь Брузер-сервер
> создётся каждый раз на запрос. Зпрос - httpRequest. Ушёл
> на сервер. Всё, что GET - передалось в CGI через пременные
> оружения. Всё, что POST - передлось в CGI через stdIn. Дальше
> сервер ждёт, когда этот зпрос будет обработан. Обработался
> - выдл ответ (в стандарте HTTP). Долго обрабатывется - выдал
> ответ в стандарте HTTP - по тймауту (настраивается на сервере).
> И всё.
> Т.е. web-сервер, по существу, очень тупая вещь. Получил
> запрос, проверил его на соответствие стандарту - передал
> обработку куда-то по URI, дождался ответ, оттранслировал
> его браузеру. Браузер проверил ответ на соответствие стандарту
> и дальше сделал что-то.
Запросы меня не интересуют. Меня интересует именно ответ. Ибо cgi ответ отсылает по частям... И хотелось бы чтобы браузер имел возможность так же и принимать его...А получается что сервер видимо накапливает где-то себе в буфере, а потом выдает (правда тоже частями, но эти части уж больно паскудными получаются).
← →
antonn © (2009-04-08 22:18) [25]
> Перезагрузка второго поколения "пепси" ?
где тут перезагрузка? человеку показали пример, ему понравилось, не факт что он примет на вооружение (хотя бы из-за того, что на юнихах не пашет, да и на дешевых хостингах доступ к шелу ограничен). А когда дойдет очередь до обработки, то окажется, что пхп и перл выруливают по удобству и скорости разработке, совсем незначительно уступая в скорости (в контексте примера). там еще надо посмотреть как cgi запускается, а то подключатся куча клиентов и память выжрут.
Поколение пепси уже в 16 лет клепает свои сайты и свободно ориентируется в ООП, тогда так поколение "допепси" все это делало в уме и в тетрадках в клеточку в куда меньших объемах.
← →
test © (2009-04-08 23:25) [26]antonn © (08.04.09 22:18) [25]
Читать только не умеет и не любит.
← →
antonn © (2009-04-08 23:38) [27]хотел было начать речь о возросшем информационном потоке, когда читать все подряд просто некогда. но да ладно, типа сдался и все победили.
← →
Игорь Шевченко © (2009-04-08 23:43) [28]antonn © (08.04.09 22:18) [25]
> Поколение пепси уже в 16 лет клепает свои сайты и свободно
> ориентируется в ООП, тогда так поколение "допепси" все это
> делало в уме и в тетрадках в клеточку в куда меньших объемах.
>
А еще очень быстро нажимает на кнопки на сотовом телефоне при отправке СМС-сообщений.
Насчет свободного ориентирования в ООП - ты вопросы хотя бы на этом сайте почитай для развеивания иллюзий.
← →
antonn © (2009-04-08 23:51) [29]Этот сайт не является для меня показателем интеллектуального развития целого поколения, даже какой либо группы. Это как минимум глупо - делать выводы о большой группе людей лишь по некоторым персонажам, просто потому что тот кто знает - сам найдет, кто не знает - спросит, и так получается, что спрашивают обычно те кто не знают. Те кто знают - не "засвечиваются".
PS зато неплохо показывает степень воспитанности, но не "пепси" :)
← →
antonn © (2009-04-08 23:55) [30]Ну и как бы вообще, я дельфи увидел на втором курсе института, а мой сосед которому 15 лет уже пишет какой то блог (ну сейчас в смысле). Они моложе, отсюда наверное они не могут правильно сформулировать вопрос, правильно проигнорировать хамство и не быть такими вспыльчивыми.
PS просто имхо
← →
Игорь Шевченко © (2009-04-09 00:06) [31]antonn © (08.04.09 23:51) [29]
Этот сайт довольно типичный.
Но я не к этому, я не зря привел аналогию про сотовые телефоны, которые, как и ООП, кстати, были созданы теми, кто "в тетрадках в клеточку".
← →
Ega23 © (2009-04-09 09:58) [32]
> Ибо cgi ответ отсылает по частям...
Не отсылает оно по частям.
← →
Ega23 © (2009-04-09 09:59) [33]Сделй абсолютно тупую вещь - поставь в середине cgi Sleep(60000). И посмотри каким-нибудь FireBug"ом что тебе в браузер придёт.
← →
12 (2009-04-09 10:07) [34]>> cgi ответ отсылает по частям
отсылает как захочет, по моим наблюдениям
repeat
writeln(\"<br> QQQQQQQQQQQQ\");
until false
и смотрим на постоянно растущий вывод
← →
antonn © (2009-04-10 00:15) [35]если включить zlib эффект будет более интересным :)
← →
Petr V. Abramov © (2009-04-10 00:20) [36]
> Ну и как бы вообще, я дельфи увидел на втором курсе института,
> а мой сосед которому 15 лет уже пишет какой то блог (ну
> сейчас в смысле).
я тоже увидел дельфи на втором курсе и тоже в 15 лет писал записочки девочкам на бумажках (e-mail) и на заборах (блог)
как одно сдругим связано?
← →
antonn © (2009-04-10 01:26) [37]не ведет блог, а пишет его.
← →
Petr V. Abramov © (2009-04-10 01:52) [38]
> antonn © (10.04.09 01:26) [37]
не понимаю разницы между "ведет" и "пишет", но еси под вторым имеется в иду какое-то веб-программирование, то тоже ниче особого, я как раз в 13-14 делал первые шаги в программизме, на СМ-4, а счас это на порядки доступнее.
← →
antonn © (2009-04-10 01:55) [39]да, действительно, фигня какая то, че уж там, в 10 лет бейсик по ТМ выучен и полет на луну для МК-54 по памяти набирается.
тему можно закрыть наверное.
← →
Плохиш © (2009-04-10 02:08) [40]
> SP (08.04.09 20:21) [24]
> Запросы меня не интересуют. Меня интересует именно ответ.
> Ибо cgi ответ отсылает по частям...
Приложение cgi ничего никуда не посылает, оно пишет текст в стандартный поток вывода. А ответ посылает веб-сервер, который руководствуется при отправке, как не странно, стандартом, в частности, на размер сетевого пакета.
> 12 (09.04.09 10:07) [34]
>
> >> cgi ответ отсылает по частям
> отсылает как захочет, по моим наблюдениям
>
> repeat
> writeln(\"<br> QQQQQQQQQQQQ\");
> until false
>
> и смотрим на постоянно растущий вывод
>
Бедные сервера, какого только им маразма разруливать не приходиться, а потом такие воют, что вындовс падает...
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2009.06.14;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.005 c