Upload: cgi (perl) vs php

Wicked

Новичок
Upload: cgi (perl) vs php

Я заметил, что иногда в пхп проектах используют cgi (в моем случае - perl) части для приему аплоадимых файлов. Хочу услышать мнение экспертов, чем это лучше обычного приема файлов пхп скриптом. Стабильность, меньше ограничений, может еще чего?

В рамках моего проекта этот скрипт должен уметь только принимать файл и сохранять на диск.
 

whirlwind

TDD infected, paranoid
>чем это лучше обычного приема файлов пхп скриптом

Больше контроля над принимаемыми данными

PHP:
#!/usr/bin/perl -w
print "Content-Type: text/html\n\n";

@lines = ();
while ($l = <STDIN>){
	sleep(1);
	$lines[$#lines + 1] = scalar(localtime)." ".$l;
}
print join("<br>",@lines),"<p>";
exit(1);
Если на вышеприведенный скрипт натравить форму с файлом, то получим нечто подобное
PHP:
Tue May 30 17:04:55 2006 ------------MVODZsisvt97blsqGCoqQj
<br>Tue May 30 17:04:56 2006 Content-Disposition: form-data; name="test"; filename="report-2006-04-14.txt"
<br>Tue May 30 17:04:57 2006 Content-Type: text/plain
<br>Tue May 30 17:04:58 2006 
<br>Tue May 30 17:04:59 2006 ###########################################################################
<br>Tue May 30 17:05:00 2006 фиксы биллинга - сделаны в течение дня, зафиксированы единовременно (время GMT)
<br>Tue May 30 17:05:01 2006 
<br>Tue May 30 17:05:02 2006 date: 2006/04/14 09:53:12;  filename: f_delivery.class.php;
<br>Tue May 30 17:05:03 2006 date: 2006/04/14 09:59:10;  filename: fa_pgcallback.class.php;
<br>Tue May 30 17:05:04 2006 date: 2006/04/14 09:59:17;  filename: fc_delivery.class.php;
<br>Tue May 30 17:05:05 2006 date: 2006/04/14 09:59:22;  filename: fm_delivery.class.php;
Как видим, STDIN содержит данные по мере поступления (фактически STDIN = сокет соединяющий с клиентом), в отличии от механизма PHP аплоада, где файлы доступны после получения. Как это можно использовать? Ну например для прогресс-бара процесса закачки файлов.
 

Wicked

Новичок
Спасибо за ответ.

В моем случае эти варианты не целесообразны, т.к.
1) аплоад будет не из браузера, а из другого скрипта
соответственно:
1.1) прогресс-бар, по всей видимости, не актуален.
1.2) а тонкий контроль над принимаемыми данными можно обеспечить с помощью использования HTTP PUT + php://input.
 
Сверху