Как правильно писать путь к файлу в команде system? Пробую вот так: Код (Text): system("http://127.0.0.1/xxxx echo.php > /dev/null &"); system("/xxxx echo.php > /dev/null &"); но не хочет работать.
Вопрос был не об этом, я и так передаю сначала имя программы, потом параметры. В инете нашел пример, где написано, что работает Код (Text): system("/usr/local/bin/php echo.php > /dev/null &"); но не могу понять, как писать этот путь. У меня на машине я вижу два пути - системный (под виндой) это С:\PHP\www\xxxx\ echo.php и тот, что отображается в браузере при запущеном апаче: http://127.0.0.1/xxxx/echo.php А как этот путь записать в файле index.php (лежит рядом с echo.php) в команде system?
Вы не помните? Вот этот пример Код (Text): system("/usr/local/bin/php echo.php > /dev/null &"); работает потому, что на машине есть директория "/usr/local/bin/", в которой есть исполняемый файл "php", которому передали параметр "echo.php". Вы не передаёте сначала имя программы, вы это только утверждаете.
Вот только файла php.exe у меня нет Есть EasyPHP.exe и я пытаюсь сделать так: Код (Text): $path = dirname(__FILE__); system('"C:\\PHP\\EasyPHP.exe" -f "' . $path . '\\echo.php"'); но не хочет работать...
Ну, не знаю, что там у тебя за PHP такой странный, что в нём нет php.exe, зато есть какой-то EasyPHP.exe... Я такого не видел. А что ты имеешь в виду под "не хочет работать"? То, что ты не видишь на экране в браузере того, что должен отобразить твой echo.php?
Нет, echo.php не должен ничего отобразить, он должен создать файл и записать в него число. Если запускаю echo.php на прямую, то он создает файл, а мне надо вызвать echo.php из файла index.php. EasyPHP.exe - ну это такой мини-сервер (апач+мускул). Запускается именно программой EasyPHP.exe. Как же мне запускать из index.php лежащий рядом echo.php?... И нужно именно запустить, а не подключить (т.е. include и require не подходят).
Возможно, также, что он запускается, но пытается создать этот файлик с числом не там, где ты ожидаешь При запуске скриптов из консоли - используй везде в скриптах полные пути.
У меня запускается так, как я описал выше. И скрипт создаёт и удаляет файлы, всё работает. Почему у тебя не запускается - непонятно.
Даже не знаю, о какой консоли речь (у меня EasyPHP - см http://ru.wikipedia.org/wiki/EasyPHP) Поставлю вопрос иначе: как (максимально проще) из одного пхп-файла (index.php) запустить (в определенном месте кода в index.php) другой пхп-файл (echo.php) и при этом продолжить работу (тем же index.php) вне зависимости от того, чем закончилась работа у echo.php (даже если echo.php вызвал fatal error)? Все, что нашел в инете про многопоточность на PHP (например, http://forum.antichat.ru/thread98635.html) - как-то очень сложно.
Вот нашел FreeBSD серв с системным путем /usr/local/bin/ и залил туда два файла: index.php Код (Text): <?php system("/usr/local/bin/php echo.php"); echo "done"; ?> и echo.php Код (Text): <?php $file_name="tmp2.tmp"; $fp=fopen($file_name,"w"); fputs($fp, "0"); fclose($fp); ?> При запуске index.php выводит done, но результата работы echo.php (должен создать файл tmp2.tmp и записать в него 0) не наблюдаю. В чем может быть проблема?
Да, запускается и работает правильно (создает файл и записывает туда число). Добавлено спустя 43 секунды: Ок, ща попробую.
На локальной машиине заработало вот так: index.php Код (Text): <?php system("php -f ".dirname(__FILE__)."\echo.php"); ?>