Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Неразрешимая задача, post из perl в php / 7 сообщений из 7, страница 1 из 1
20.09.2015, 15:50
    #39056666
hostman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неразрешимая задача, post из perl в php
Долго разбирался, не нашел решение. Чтобы было понятно, задача такая:
есть скрипт perl и есть скрипт php. Нужно передать произвольные данные html-post-формы, полученные perl в скрипт php. PHP эти данные обрабатывает и выводит результат через echo. То есть выглядит так:
Код: php
1.
2.
3.
<?php
foreach ($_POST as $indx=>$val) {
...


То что накопал в гугле. Все варианты с передачей параметров, типа system и прочее отсекаются сразу, так как данные могут быть произвольной длинны в произвольном количестве. Есть вариант создать временный файл, набить туда все значения POST и прочесть в php через тот же system с параметром имени временного файла, но это по-моему изобретение велосипеда и множество лишних проверок на приём файлов, многострочного текста и т. п. А как это реализовать встроенными методами, есть ли способ?
...
Рейтинг: 0 / 0
20.09.2015, 15:57
    #39056670
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неразрешимая задача, post из perl в php
сделай POST запрос из perl скрипта к PHP скрипту (через http)
к PHP скритпу - ограничь доступ (только от localhost)
...
Рейтинг: 0 / 0
20.09.2015, 19:39
    #39056753
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неразрешимая задача, post из perl в php
1) оставить php в покое , вывести данные через perl, например на STDERR
Код: php
1.
2.
#!/usr/bin/perl
warn "Login: $login\n Password: $password";




2) через system или через exec
Код: php
1.
2.
#!/usr/bin/perl
exec "php", "aaa.php, "-login", $login, "-password", $password;



Код: php
1.
2.
3.
<?php
var_dump($argv);
?>




3) через трубу

Код: php
1.
2.
3.
4.
5.
6.
#/usr/bin/perl
open  PHP, "| php aaa.php" or die $!;

print PHP "Login=$login \n Password=$password\n";

close PHP;



Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php

while ( !feof(STDIN) ) {

    $line = trim(fgets(STDIN)); // reads line from STDIN
    echo ++$i, " ", $line, "\n";
}

?>
...
Рейтинг: 0 / 0
20.09.2015, 22:03
    #39056825
hostman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неразрешимая задача, post из perl в php
Метод через HTTP пробовал на CURL, работает, но апач сильно нагружается, не подходит. Много запросов в моём случае.

3-й вариант через stdin самый подходящий! Интересно, какую длину данных можно передать таким способом...
...
Рейтинг: 0 / 0
20.09.2015, 22:17
    #39056833
hostman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неразрешимая задача, post из perl в php
volodin661,

Получилась весёлая реализация передачи $_POST

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?php

/*
На входе строка:
$_POST = array(
'a' => '1',
'b' => '2',
);
*/

$postcode = '';
while ( !feof(STDIN) ) {

    $line = trim(fgets(STDIN));
    $postcode .= $line . "\n";
}

eval($postcode);
print_r($_POST);

?>
...
Рейтинг: 0 / 0
21.09.2015, 13:14
    #39057261
hostman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неразрешимая задача, post из perl в php
$_ENV тоже передаётся в php как $_SYSTEM. При добавление элемента в массив этот элемент так же передаётся в php (!!!) Является ли это документированной фичей, не понятно, но в моём конкретном случае это работает. Я только не разобрался пока, как можно к элементу присвоить чистый массив данных POST. Только строкой пока что...
...
Рейтинг: 0 / 0
22.09.2015, 11:09
    #39058114
hostman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неразрешимая задача, post из perl в php
hostman,

написал почему-то $_SYSTEM, на самом деле $_SERVER
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Неразрешимая задача, post из perl в php / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]