Нужно выполнить код в фоновом режиме - PullRequest
1 голос
/ 28 апреля 2011

Я сделал код для получения изображений с iphone на PHP Server, и мне нужно изменить размер этого изображения и переместить в 4 папки.

Только тогда json respose подает iphone.Но это занимает много времени.

Требование:

  1. Я хочу переместить файл в папку "folder1", а затем дать ответ json.

процесс изменения размера должен делать из этой "папки1" после ответа json.

Как запустить этот процесс изменения размера в фоновом режиме.

Вот мой код:

http://pastebin.com/qAcT1yi9

Ответы [ 6 ]

1 голос
/ 28 апреля 2011

Вы всегда можете отправить свой php-скрипт для запуска в фоновом режиме с помощью команды Linux.

Пример:

// using backticks to execute the Linux command but there are 
// other alternatives 
$cmd = `php runScriptInBackground.php &`;
echo $cmd;
0 голосов
/ 28 апреля 2011

Вы можете сделать это действительно два раза, сначала отправив файлы и сохранить на первом сервере, после того как пользователь запросит создание необходимых деталей.

Вы передадите расходы от отправителя файла напервый запрос от этого.

0 голосов
/ 28 апреля 2011

вам нужен некоторый асинхронный JavaScript или iframe на вашей странице, отправляющий изображение на ваш сервер и обеспечивающий обратную связь с пользователем.

Это означает, что «главная» страница не изменится, но некоторая визуальная информация можетбыть предоставленным пользователю.

Вы можете отобразить анимированный загрузчик GIF или использовать JS setInterval, чтобы дать пользователю ощущение, что все движется вперед, зачем ждать ответа от сервера.

Если обработка разделена на более 1 части, после каждого шага сервер может ответить HTML-страницей и перенаправлением: это будет работать даже в IFRAME без JS.Каждая «страница» будет выполнять еще один шаг.Но если пользователь закроет браузер до того, как все будет сделано, вы закончите с незавершенной задачей.

БД, реальная фоновая обработка и опрос JS на стороне клиента - более надежная альтернатива.

Aполный ответ будет довольно длинным и потребует более подробной информации о ваших настройках (apache CGI PHP? или mod_php? вы используете модель или фреймворк MVC или пишете сайт-ориентированный веб-сайт?).

Если бы мне пришлось написать полный ответ, я бы забыл PHP и использовал Python и сельдерей http://celeryproject.org/; -)

PS.

Я только что узналчто несколько связанных вопросов уже существовало:

0 голосов
/ 28 апреля 2011

если ваше здание в цели c, то вы можете просто изменить размер, сделать копию и изменить ее размер там и отправить изображение с измененным размером вашему php, после чего вы можете отобразить спиннер и результат json обратно пользователю, а также, если ошибкау пользователя все еще будет изображение с измененным размером, чтобы попытаться снова ... Также еще одна мысль, которую я имел, состояла в том, чтобы использовать push-уведомление.Я не знаю, как будет выглядеть этот код, но стоит подумать

0 голосов
/ 28 апреля 2011

Распространенным решением этой проблемы является реализация сообщения загрузки / обработки при достижении определенного события.Затем - все еще отображается - действие будет продолжать загружаться в фоновом режиме, и страница результатов будет, наконец, отображена после завершения.

Хотя пользователь должен подождать, я предпочитаю, чтобы выше отображалось сообщение с результатом, когда фактический результатне известноК сожалению, я не уверен, , как это делается при разработке iphone.

0 голосов
/ 28 апреля 2011

Сначала отправьте / загрузите изображения и отправьте ответ обратно, не выполняя операцию изменения размера.

Затем, если загрузка прошла успешно, разрешите браузеру выполнить другой запрос и выполнить изменение размера.Когда это удастся, отправьте сообщение «изменение размера успешно» обратно.

...