![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файл - Из консоли [Delphi] - в скрипт [PHP] [D7, XP]
timekiller © (2009-09-03 15:17:00)Есть консоль, которая обрабатывает некий бинарный файл
Текущий алгоритм:
Результат некой обработки 1го бинарного файла создается и записывается как другой бинарный файл, затем с помощью PHP формируется ссылка для скачивания на 2й бинарный файл.
Дайте наводку:
Каким образом сделать так, чтобы консоль отдала результат веб скрипту без создания 2го бинарного файла? Обычный Write/Writeln какбы нещадно рвет/выдает непонятными кусками содержание файла (Видимо спецсимволы?)...
McSimm (2009-09-04 13:45:00) [1]Не обязательно.
Можно связать хендл файла со стандартным устройством.
Если не ошибаюсь - пустое имя файла в AssignFile сделает свое дело.
timekiller (2009-09-04 13:41:00) [2]
> BlockWrite, наверное поможет.
дк это про файл.. или memorystream, который я не умею передавать во вне ....
McSimm (2009-09-04 13:34:00) [3]BlockWrite, наверное поможет.
timekiller (2009-09-04 13:28:00) [4]Ну а теперь назад, про вывод - как всётаки отдавать данные, с помощью чего?
Writeln/write рвут вывод (выдают хаотично кусками)
McSimm (2009-09-04 13:18:00) [5]Еще - саму консольную программу можно вполне сделать как CGI и вызывать без всяких PHP.
timekiller (2009-09-04 13:15:00) [6]
> программа на D7 работать на FreeBSD наверное не будет :)
Компилю лазарусом уже в самой фре. Консолька существовала до меня на винде (другой разработчик), постепенно переношу заодно
McSimm (2009-09-04 12:23:00) [7]
> как передать из внешнего процесса в PHP без создания файла
> ? - да да, двоичный файл (бинарник)
Ответ на этот вопрос - popen() - запустите ваш процесс из PHP и будете читать вывод этого процесса, без создания файла.
--
программа на D7 работать на FreeBSD наверное не будет :)
timekiller (2009-09-04 12:17:00) [8]Вопрос о чем ? как передать из внешнего процесса в PHP без создания файла ? - да да, двоичный файл (бинарник)
> Обычный Write/Writeln какбы нещадно рвет/выдает непонятными
> кусками содержание файла (Видимо спецсимволы?)...
куда именно выдает - в браузер, терминал или в файл - Вывод на консоль, который можно returnить и в браузер и в терминал или в файл посредством > FreeBSD
McSimm (2009-09-03 23:58:00) [9]Вопрос о чем ? как передать из внешнего процесса в PHP без создания файла ?
Или как правильно выдать из консоли набор данных ?
Посмотрите PHP функцию popen()
> Обычный Write/Writeln какбы нещадно рвет/выдает непонятными
> кусками содержание файла (Видимо спецсимволы?)...
куда именно выдает - в браузер, терминал или в файл ?
timekiller (2009-09-03 15:49:00) [10]Нет, должен быть файл, консоль и отдаваться результат, все просто, не нужны другие файлы попросту. Тоесть не нужно несколько путей и крюков - нужна прямая...
Проблема еще и в том что на папку с консолью обязательно стоит chmod 40555 (FreeBSD)
Просто создать некий поток, как сделать - я пока не вкурсе...
Омлет (2009-09-03 15:32:00) [11]По-моему, лучше так, чем мудрить что-то с динамической выдачей.. Есть ведь еще докачка, и многопоточное скачивание, и определение размера файла качалкой.
Когда файл2 не качают, к примеру, час, можно удалять, чтобы не было мусора.
timekiller (2009-09-03 15:26:00) [12]Нужно обойтись без файла 2, вообще ... Без лишнего мусора тоесть
Омлет (2009-09-03 15:24:00) [13]Формировать ссылку, а файл2 не делать.
Когда по ссылке обратятся, тогда создавать файл2 и отдавать.