Использование cURL для публикации данных, но время ожидания Apache - PullRequest
0 голосов
/ 02 апреля 2012

Моя версия PHP 5.2.9p2. Этот типичный код используется для отправки файла на другой сервер.

$post_url = "http://www.website.com/upload";
$post_data['file'] = "@$filePath";
$post_data['title'] = "title";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $post_url);
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_nm);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_nm);
$return = curl_exec($ch);

Я использую общий сервер, и его настройка Apache говорит " Время ожидания соединения: 180 - Keep-Alive: 3 "

Если размер файла несколько велик (около 15 Мб), любой браузер показывает сообщение о тайм-ауте через 3 минуты, а затем ничего не происходит. Тем не менее, файл успешно передан. Только браузер не показывает его результат.

[править]

Как я думаю, поскольку ничего не загружается до завершения скрипта, это вызывает тайм-аут. Я добавил " curl_setopt ($ ch, CURLOPT_NOPROGRESS, false); ", но это ничего не сделало. Я думаю, это не работает вообще. Я также попробовал приведенный ниже код с их API загрузки файлов (SOAP).

function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) {
    echo $notification_code . $severity . $message . $message_code .     $bytes_transferred . $bytes_max;
}


$ctx = stream_context_create();
stream_context_set_params($ctx, array("notification" => "stream_notification_callback"));
$post_data["file"] = file_get_contents("files/$fileName", false, $ctx);

Однако он не запустил функцию stream_notification_callback.

Есть ли какое-либо решение, позволяющее избежать тайм-аута Apache? Я не могу редактировать настройки Apache. Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...