Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1239309026
Юрий
2009-04-10 00:30
2009.06.14
С Днём рождения ! 10 апреля 2009 пятница


15-1239092112
Cobalt
2009-04-07 12:15
2009.06.14
Установка JEDI


15-1239175665
Usov
2009-04-08 11:27
2009.06.14
Проблема отображения на сервере параметров с POST запроса


15-1239281628
БарЛог
2009-04-09 16:53
2009.06.14
Уничтожение данных на ЖД


15-1239392544
gost
2009-04-10 23:42
2009.06.14
скрытый запуск приложения





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский