Как запустить внешнюю программу win32.ехе или (cmd) из скрипта php, как потом убить принудительно запущенный процесс?
Хотелось бы поподробнее А именно запуск exe-файла с указанием пути (где вообще должен лежать исполняемый файл чтоб к нему был доступ), получение pid процесса, убийство процесса по pid. ЗЫ Указание исполняемого файла по абсолютному пути работает, а относительный можно указать (относительно корневой web-директории)? PHP: <?php $command="start /w D:/passpro/PasswordsPro.exe /auto"; exec("$command"); ?> И как сделать чтоб скрипт не ждал завершения внешней комманды, направить вывод в файл?
ИМХО никак. Сам ищу такую возможность. Или это возможно через большую толстую вончую задницу используя консольный php. Но думаю что нет
где будет лежать файл - без разницы.. taskkill с данными параметрами, что я указал, убивает процесс по его имени, т.е. taskkill /F /IM имя_процесса т.ч. pid узнавать не надо.. можно указать относительный путь.. >> И как сделать чтоб скрипт не ждал завершения внешней комманды, направить вывод в файл? я даже х.з.. я б вообще такое не пхп писал, а на PERLe например, используя треды..
ээ, я не совсем понял мож быть, но чем вам такой вариант не нравится: PHP: <?php $f=fopen ("asd","w"); $spec = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("file", "eeror", "a") ); $proc = proc_open("cmd.exe", $spec, $pipes); for ($i=0; $i<100; $i++) fwrite($pipes[0], "echo Hello World #$i!\n"); fclose($pipes[0]); while (!feof($pipes[1])) fputs($f,fgets($pipes[1], 1024)); fclose($pipes[1]); proc_close($proc); ?>
Гм интересная штука, но все равно делает не то, что надо. Надо запустить некую прогу и чтобы она сама по себе работала и выводила в файл, а скрипт при этом не зависал, а продолжал работу, например.
Macro, мож я реально чето не догоняю (после вчерашнего) но вот смотри: PHP: <?php $spec = array( 0 => array("pipe", "r"), 1 => array("file", "eeror", "w"), 2 => array("file", "eeror", "a") ); $proc = proc_open("ping", $spec,$pipes); fwrite($pipes[0], "localhost -t100\r\n"); echo 1233; proc_close($proc); ?> вроде как скрипт завершился, но файл eeror постоянно увеличивается, т.е. команда ping localhost -t100 выполняется и результат пишется в файл
дабы не вводить людей в заблуждение скажу: да ты прав, я тупанул, я просто не завершил процесс когда пробовал а скрипт завершил принудительно и этот процесс у меня в файл и писал вобщем пробую дальше что нибудь мож че и получится, хотя сейчас уже совсем не уверен
мм, на пшп писать такую вещь не следует, даже на перле будет проблематично всё таки языки немного не для этого =\ хотя всё возможно
win32: Code: system("start /B prog.exe") # не ждать завершения работы прог.ехе, но и не завершать скрипт system("start /B prog.exe > file") # тоже самое с перенаправлением вывода аналогично для *nix: Code: system("setsid ./prog") system("setsid ./prog 2> file")
Есть бооольшущий txt файл состояций только из строчек (первая строка): Code: at :: (ip: *)</font></td><td valign=bottom align=right>(<a href=# onClick=javascript:popUp("message.php?id=9")>E</a>)</td></table></td></tr></table></td></tr></table><table width="100%" border="0" cellspacing="0" cellpadding="0" bordercolor="#FFFFFF"> <tr> <td height="27"> <table width="100%" border="0" cellspacing="2" cellpadding="2"><tr> <td width="30"> <div align="center"><b>2</b></div></td><td width="30" bgcolor="#CBD5DC" valign="bottom"> <div align="center"> <a href=http://site.com/profile.php?id=6><img src=Site.com/25000000.gif border=0 width=20 height=20 alt='a'></a></div></td><td valign="bottom" bgcolor="#CBD5DC"> <b>vasia:qwe123:[email protected]:222345</b></td><td width="100" valign="bottom" bgcolor="#CBD5DC"> <div align="right"><b> <a href='mailto:[email protected]'>4</a></b></div></td></tr></table></td></tr><tr> <td><table width="100%" border="0" cellspacing="2" cellpadding="2"><tr bgcolor="#CBD5DC"> <td bgcolor="#E6EBEE"> <font size="2" face="Geneva, Arial, Helvetica, san-serif">3<br><table width=100%><td valign=bottom align=left><br><div align=left><font size=1>10<div align=left><font size=1>Posted on: 8 Естественно хотелось бы вычленить от сюда части в отдельный файл, при этом поле icq не всегда присутствует, то есть бывает вид открыть-закрыть-записать в файл я в состоянии, но вот написать реглярку, как я понимаю надо через preg_match делать, но че там со слоями и чтобы все это еще и работало, я сделать не могу. Заранее спасибо, отплюсую всех, кто поможет.
PHP: preg_match_all('/([^>:]+):([^:]+):([^:]+):([^:<]*)/',$file,$matches); $names=$matches[1]; $passes=$matches[2]; $mails=$matches[3]; $icqs=$matches[4]; Что-то типа того
Такой ламаковский вопрос в пхпбб есть такой код PHP: if ( !defined('IN_PHPBB') ) { die("Hacking attempt"); exit; } а есть и без "exit" PHP: if (!defined('IN_PHPBB')) { die('Hacking attempt'); } Знач вопрос - зачем в первом варианте exit, здесь есть какой то тайный смысл (ну типа ДАЙ не всегда срабатывает и т.д.) или это они добавили ДАЙ, а ЕХИТ им было впадло удалять.