Автор Тема: Запуск PHP скрипта из Perl  (Прочитано 22355 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Integra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« : 27 Ноября 2006, 18:17:39 »
Привет, господа! Тема, быть может, поднадоевшая, но помощь нужна. Задачка: есть ядро сайта на Perl, оно генерирует страницу (что-то выводит). Есть куча скриптов на PHP, которые что-то выводят. Требуется запустить эти скрипты из ядра. Пишем:
@php=`php /home/test.php`;
/*можно так, можно через трубы, системы и экзеки*/
В дочернем скрипте что-то выводим на стандартный поток вывода.
 Переменная php при этом остается пустой. Где ловить вывод PHPшных скриптов? Тот же вопрос возникает при решении обратной задачи: где ловить perl овских скриптов?

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #1 : 04 Декабря 2006, 17:31:52 »
хы, как то и даже и не знаешь что в таких случаях сказать ), вроде вопрос серьезный потоки даже вывода, в принципе. я думаю вопрос серьезный и требует обсуждения в узких кругах )
убили кенни, сволочи

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #2 : 04 Декабря 2006, 17:33:12 »
я имею в виду что узкие круги как то не могут не отметить ветьеватость этого вопроса )
убили кенни, сволочи

Оффлайн Integra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #3 : 04 Декабря 2006, 17:56:52 »
интересно, где ж его взять, если не здесь

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #4 : 04 Декабря 2006, 18:04:13 »
хы, мне кажется в решении какого то вопроса, в системном подходе к решению есть такие вещи как анализ - разложение сложной структуры до атомов ). попробуйте разбить ваш вопрос на простые три )
убили кенни, сволочи

Оффлайн Integra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #5 : 04 Декабря 2006, 18:06:49 »
рекомендую рассмотреть эту тему с точки зрения линуксового программирования, поверьте, она неделима, тк проблемы есть только(!) с выводом интерпретаторов php и perl

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #6 : 04 Декабря 2006, 18:28:01 »
Цитировать
Integra:
линуксового программирования

вот такого конечно я еще не встречал )

программирование таки на мой взгляд это программирование прежде всего если уж на то пошло.

Ну да ладно, не думал что Вы будете настаивать на своем вопросе )

1. прежде всего мне кажется сомнительным запуск php скриптов написаных под веб, и генерящих страницу из коммандной строки. Мне кажется вы потеряете ряд переменных окружения и скрипт может дать ошибку.
* я бы посоветовал | use LWP;
2. не понимаю причем тут потоки ? к этому вопросу. но вообще они легко делаются
но в принципе если вам интересен этот вопрос советую *Линкольн Д.Штайн "Разработка сетевых программ на Perl"*

простите если не понял в чем ваш вопрос
убили кенни, сволочи

Оффлайн Integra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #7 : 04 Декабря 2006, 18:35:40 »
Линкольн-де-Штайна уже скачан, вот прочитаю Гради Буча, читать буду именно его:-)

Потоки в линуксах не делаются, там только процессы форкнуть можно. А потоки не делаются. Они есть. Это, например, print - типа как считать с клавиатуры, но если с другого скрипта чтото перенаправить в этот самый stdin, это хороший способ передачи параметров. Другое дело, что этого конкретно и не получаицо. Конкретно в случае с интерпретаторами.
Кстати, если мы запускаем скрипт php из php-скрипта, весь вывод интерпретатора мы ловим в результирующую переменную. У них эти потоки несчастные совпадают. А вот только пробуем как в первоначальном вопросе - получается трреш, ни php ничо не видит, ни perl

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #8 : 04 Декабря 2006, 18:46:04 »
а вы бы код написали, так посмотреть, именно что вы делаете?
убили кенни, сволочи

Оффлайн Integra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #9 : 04 Декабря 2006, 18:49:50 »
На php все работает вот так:
 /*--------------------------*/
echo "other-text";
exec("php result.php &",$ret);
echo $ret[3];
echo "other-text";
?>
Запускаемый скрипт содержит строчки:


 /*--------------------------*/
Команда exec выполняет запуск внешней программы с командной строки unix, в данном случае \'php result.php &\' и заносит результат в переменную $ret. Получается массив, на третьей позиции - выведенный в стандартный выходной буфер текст. Можно не делать wait, скрипт работает быстро.

Первый скрипт перенесится на perl, и не выводится ничего.
Верно и обратное.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Запуск PHP скрипта из Perl
« Ответ #10 : 04 Декабря 2006, 19:06:14 »
#!/usr/bin/perl

print "================\\n";

$test = `ls -la ./ &`;
print 
$test;
print 
"================\\n";

Такой пример линуксового программирования работает?

А вот зачем смешивать два скриптовых языка в пределах одного проекта мне непонятно, неужели нельзя переписать все на одном языке?
The documentations is your friend

Оффлайн Integra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #11 : 04 Декабря 2006, 19:12:42 »
Пробовали аналогичное, работает. Но! Как только пишем `php p.php &` весь вывод куда-то неожиданно девается.
Или если пишем в php
ecec("perl ./t.pl",$res);
print_r($res);// отладочная расчепятка массива
$res - девственно пустой массив.

Оффлайн ravshaniy

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 191
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #12 : 04 Декабря 2006, 19:16:22 »
Цитировать
Integra:
echo "other-text";
exec("php result.php &",$ret);
echo $ret[3];
echo "other-text";
?>
Запускаемый скрипт содержит строчки:

я конечно могу ошибаться, но exec ни в перле ни в пхп не возвращает результат своего выполнения в  скрипт который его вызывает. комманда exec создает паралельный процесс, у которого свой собственный вывод. единственное что вы вернете таким методом это 1 в случае безуспешного выполнение exec("php result.php &",$ret); кажется так, но опять же могу ошибаться я новичег
убили кенни, сволочи

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Запуск PHP скрипта из Perl
« Ответ #13 : 04 Декабря 2006, 19:16:31 »
# php index.php
X-Powered-ByPHP/5.1.1
Content
-typetext/html

# perl 12
================
X-Powered-ByPHP/5.1.1
Content
-typetext/html

================
# cat 12
#!/usr/bin/perl

print "================\\n";

$test = `php ./index.php &`;
print 
$test;
print 
"================\\n";
The documentations is your friend

Оффлайн Integra

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 21
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Запуск PHP скрипта из Perl
« Ответ #14 : 04 Декабря 2006, 19:18:30 »
Цитировать
NeoNox:
А вот зачем смешивать два скриптовых языка в пределах одного проекта мне непонятно, неужели нельзя переписать все на одном языке?

Не будем вдаваться в политику партии и мораль сей басни, но естьу нас тяжеленное ядро сайта на perl, и есть куча модулей на php. Сейчас временно! они запучкаются через редирект, но эту ситуацию нужно исправить. Переписывание ядра и модулей в проекте в ближайшее время не предполагается

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28