Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/28: Рейтинг темы: голосов - 28, средняя оценка - 4.93
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
1

Запуск внешней программы с PHP

20.12.2009, 17:29. Показов 5529. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Делаю цикл типа:
PHP
1
2
3
4
5
6
7
foreach ($files as $pic)
{
  print 'making nail for $pic ...';
  exec ('convert -resize 100x100 $pic $pic.png');
  print 'done
';
}
В общем мысль понятна.
Кто знает, почему под Linux это работает как положено - то есть выводится сообщение, потом ждем выполнение команды, потом пишет done и так далее.
А под виндами ждет пока не выполнится весь цикл и нечего не выводит, а в конце выдает разом все сообщения! Пробовал по flush() отправлять вывод из буфера - не помогает.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2009, 17:29
Ответы с готовыми решениями:

Запуск внешней программы
Очень прошу помощи. С php толком никогда дела не имел. Задача следующая: Нужно, чтобы при нажатии...

Запуск из программы с админскими привилегиями внешней программы без прав админа
Нужно в программе которая запущенна под амином запустить другую программу без прав админа.

Запуск внешней программы программы из коммнадной строки
Здравствуйте, есть программа D:\user\start.exe Как средствами excel vba вызвать командную строку и...

Запуск внешней программы
Доброго времени суток. exec - запускает но не возвращает управление программе system - запускает...

20
4 / 4 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
20.12.2009, 23:47 2
попробуй не мнго приостанавливать всё это дело sleep()
0
0 / 0 / 1
Регистрация: 03.12.2009
Сообщений: 124
21.12.2009, 09:44 3
а вот эсэлЬ - то уж должен знать почему ждет прохождения всего цикла!!! это же у него вся оперативка забивается, и прочая ерунда происходит. говорил же я не совоться туда куда не знаешь, а он еще советы дает - да какие, поставь говорит sleep чтоб еще медленнее было.

для работы этого цикла так как реально задумано надо использовать flush() ибо все данные сначала помещаются в буфер
и только потом высылаются в браузер. так вот flush() этот самый буфер и очищает, отправляя все что в нем браузеру.

сразу огорчу - под виндой у меня flush() не работает, в чем причина - понятия не имею. но ходят слухи что у многих работает. возможно зависит от способа подключения php к апачу. у меня стоит как модуль.

эксперементируй!
0
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
21.12.2009, 09:55  [ТС] 4
Flush не работает? Логично.
Просто любопытно - в чем по твоему разница в этом случае между виндой и линуксом (без flusha) на одной машине?
0
0 / 0 / 1
Регистрация: 03.12.2009
Сообщений: 124
21.12.2009, 10:09 5
разные ОСи, соответственно - абсолютно разные реализации, конфигурации как апача, так и пхп. У пхп - есть инструкции в пхп.ини выводить все сразу, без буферизации, но видимо не работает она как раз по причине проблем с flush()

вполне возможно что в линухов пхп - такая инструкция стоит по умолчанию.

а разница очевидна - пхп вообще под *никс писался изначально, а под винду его просто подгоняли ... а от машины тут ничего не зависит.
0
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
21.12.2009, 11:43  [ТС] 6
Кстати этот самый 'convert' в реализации под виндоуз работает в 3 раза быстрее, чем под родным Линукс (по крайней мере меняет размер изображения.
А вот функции 'images...' из ПХП наоборот под виндами работают раз в 10 медленнее.
0
0 / 0 / 0
Регистрация: 15.12.2009
Сообщений: 15
26.12.2009, 04:23 7
; buffering functions. You can also enable output buffering for all files by
; setting this directive to On. If you wish to limit the size of the buffer
; to a certain size - you can use a maximum number of bytes instead of 'On', as
; a value for this directive (e.g., output_buffering=4096).
output_buffering = 4096

оно??
0
0 / 0 / 1
Регистрация: 03.12.2009
Сообщений: 124
26.12.2009, 09:57 8
; Implicit flush tells PHP to tell the output layer to flush itself
; automatically after every output block. This is equivalent to calling the
; PHP function flush() after each and every call to print() or echo() and each
; and every HTML block. Turning this option on has serious performance
; implications and is generally recommended for debugging purposes only.
implicit_flush = off

оно!!!
0
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
26.12.2009, 16:59  [ТС] 9
Сейчас попробую, спасибо.
У меня еще вопрос на засыпку - я правильно понимаю, что выполнить внешнюю программу, которая не является утилитой командной строки невозможно?
Мне нужно запустить из ПХП, например, GIMP под линуксом или фотошоп в виндах - как быть?
0
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
27.12.2009, 11:41  [ТС] 10
Пожалйста,
напишите кто-что может по моему последнему вопросу!
0
0 / 0 / 1
Регистрация: 03.12.2009
Сообщений: 124
27.12.2009, 12:27 11
запускать Photoshop ...

хм - а где смысл?

что то я никак не сооброжу ... что это вообще будет.
и как это увязать с вебом. расскажи лучше
для каких целей тебе вообще необходимо это организовать
а то может ты вообще на неверном пути

90% ошибок возникают на стадии проектирования
0
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
27.12.2009, 12:45  [ТС] 12
Расскажу с удовольствием.
Я увлекаюсь цифровой фотографией и их у меня уже больше 1000.
Комп у меня то под виндами, то под Линуксом.
В последнем случае ни одной нормальной программы для фотоальбомов я не нашел, да и в первом тоже. Также под Линуксом нет программы, которая бы группировала фотографии, например, по 4 на листе А4 для печати. Кроме GIMP и convert - мне надо, чтобы жена тоже могла пользоваться.
Поэтому я поставил хост на одну и туже директорию (под fat32) в виндах и линуксе и написал (пишу) на рхр свою программу для фотогаллереи.
Готовые не нравится ни одна!
Так вот я хочу запускать фотошоп с выделеными фотографиями прямо из браузера, если нужно, например, подтянуть уровни. Хотя, конечно, понимаю, что это задача не для ВЕБ-приложений.
0
0 / 0 / 1
Регистрация: 03.12.2009
Сообщений: 124
27.12.2009, 12:50 13
ну идея конечно хорошая,
но думаю сдесь java больше подойдет!!!
0
0 / 0 / 1
Регистрация: 03.12.2009
Сообщений: 124
27.12.2009, 12:56 14
у меня таже история было с музыкой,
но только платформа у меня одна
поэтому я заделал на C++

а в вашем случае - межплатформенную программу
можно написать на Java, причем по моему не так
уж и сложно это будет сделать, а возможностей
много - и сервер совсем не нужен
0
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
27.12.2009, 13:09  [ТС] 15
Я явы совсем не знаю.
У меня еще задумка опубликовать потом это в ВЕБе в усеченном варианте - для друзей.
Все таки - есть идеи по запуску фотошопа на ПХП?
0
0 / 0 / 1
Регистрация: 03.12.2009
Сообщений: 124
31.12.2009, 21:04 16
Для веба такие заморочки вообще смысла не имеют.
Потому что все построено на технологии клиент - сервер.
Клиент спрашивает - сервер отвечает. Все рассчитано на передачу данных. А если запускать Фотошоп на сервере - то какой это имеет смысл? Думаю админ от этого не обрадуется, а клиенту до запущенного (ну допустим) Фотошопа никогда не добраться. Сдесь надо получить доступ к командной строке, и это через веб нериально (про вынос апача умолчим).
0
0 / 0 / 1
Регистрация: 14.02.2009
Сообщений: 470
03.01.2010, 10:54  [ТС] 17
Я не собираюсь в ВЕБе запускать фотошоп. Хочу опубликовать только саму фотогаллерею, без администрирования.
Так все-таки - есть идеи по запуску фотошоп из ПХП?
0
0 / 0 / 1
Регистрация: 03.12.2009
Сообщений: 124
03.01.2010, 17:46 18
знаешь - я все это расписал не для того чтоб ты вопрос задал еще раз, а для того чтоб тебе ясно стало что это несочетаемые вещи.

любой сервер - будь то локальный или удаленный - остается сервером,
поэтому все это относится и к твоему серверу тоже.

есть такая штука как PHP-GTK, так вот там - такое возможно, так как в этом случае созданное приложение никакого отношения к вебу не имеет.

что касается самого PHP:

passthru()
system()
exec()

Вот набор функций которые позволяют худо бедно исполнить внешние команды.
Конечно можно к примеру дабавить путь к photoshop.exe в PATH и пустить

exec('photoshop.exe');

но честно скажу - не пробовал ))))
0
rookie
06.01.2010, 03:30 19
Вебсервер для апплета на джаве действительно не нужен но существует небольшое ограничение.Если у юзера нет на компе джавы(ХР например) то ему качать ее надо. Если у него есть встроенна джава от майкрософт то она старая и урезанная и свингов в ней нет(а это очень хорошая штука) поэтому если писать на свинге то надо юзеру ставить линк на скачку плагина(JRE 1.4.2).С Линуксом по моему проще по крайней мере со свежими версиями там уже есть джава и гораздо выше версии чем на виндоуз.
А ваще прикольно у вас тут на форуме по пхп.sl_play ругается запостоянку с 8fr0st8... Иногда захожу чисто почитать что ещё нового они придумали во взаимном оскорблении друг друга))))))))))))
0 / 0 / 1
Регистрация: 03.12.2009
Сообщений: 124
06.01.2010, 23:01 20
а мы люди не гордые. мне вообще все по барабану.

могу и на вас мистер последняя кровь наехать.

не джава вообще то а Ява, и названа оно в честь острова, на котором колоситься кофе. Кстати и эмблема у него - кофейная кружка )))

И еще - это вообще ответ на какой вопрос? Чета я весь топик перерыл, но нигде контакта не нашел. Или ты просто решил блеснуть своими познаниями в Джаве? Тогда заходи чаще - познаний будет больше 6)

!!!Вы прослушали тренировачный наезд на мистера Роки, просьба не воспринимать эти строки в серьез, ну разве что за исключением строк про кофе.!!!

ОФФТОПИК ))))))))))))))))))))))))))))
0
06.01.2010, 23:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2010, 23:01
Помогаю со студенческими работами здесь

Запуск внешней программы
В программе создается некое изображение, которое потом нужно открыть внешней программой. Но до для...

Запуск внешней программы
Нашел пример с интернета, подставил свои данные но код не работает, просто тупо ничего не...

Запуск внешней программы
Доброго дня. Подскажите пж. В паке лежит несколько файлов с расширением dtl, например ...

Запуск внешней программы
Нужно, что бы по клику на кнопку вызывалась программа. Вопросы: 1)Что мне прописать сюда: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru