Я пытаюсь отправить большие zip-файлы в приложение Tomcat, используя curl в php-скрипте. Поскольку это большой zip-файл, на tomcat-сервере потребуется некоторое время, чтобы распаковать zip-файл (около 2-5 минут), но запрос curl никогда не ждет более 30 секунд, прежде чем он просто продолжится, как если бы он получил пустой ответ.
Код, с которым я могу воспроизвести проблему:
set_time_limit(0);
$uploadURL = 'http://192.168.0.2:8080/some/url/'
$userid = 'a-user';
$password = 'a-password';
$zipfile = '/tmp/myfile.zip';
$ch = curl_init($uploadURL);
curl_setopt($ch, CURLOPT_HEADER, array(
'Connection: Keep-Alive',
'Keep-Alive: 3600'
));
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
curl_setopt($ch, CURLOPT_USERPWD, $userid.":".$password);
curl_setopt($ch, CURLOPT_POST, true);
$post = array(
"uploadMode" => "uploadOnly",
"id" => $id,
"numberOfFiles" => "1",
"file"=>"@".$zipfile.";type=application/zip"
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 45);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_TIMEOUT, 200);
$response = curl_exec($ch);
Единственное подозрение, которое я оставил, заключается в том, что curl выполняет запрос, а затем время ожидания истекает из-за определенного количества секунд, без каких-либо байтов, отправляемых назад или вперед (так называемый Между_байтами_выходом). Но я не могу найти вариант скручивания, чтобы помочь с этим, поэтому я надеюсь, что это что-то еще.
Сервер Tomcat находится в открытом доступе, так как я могу сделать запрос к нему с помощью моего браузера, который может без проблем работать часами.