Ben Youtube Direct Upload üzerinden video göndermek için PHP kullanıyorum. Daha küçük ölçekli videoları için çalışıyor ancak bir 390 MB video göndermek için çalışırken, ben şu hatayı alıyorum:
PHP Fatal error: Out of memory (allocated 3932160) (tried to allocate 390201902 bytes)
I memory_limit
artan denedim ama yardımcı olmuyor.
if ($isFile) {
ini_set('memory_limit', '2G')
$data = file_get_contents($data);
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$out = curl_exec($ch);
curl_close($ch);
return $out;
Ben de exec()
ile kıvırın çalışıyor denedim ama sonra daha da garip şeyler oluyor:
curl http://uploads.gdata.youtube.com/feeds/api/users/default/uploads -H 'POST /feeds/api/users/default/uploads HTTP/1.1' -H 'Host: uploads.gdata.youtube.com' -H 'Authorization: OAuth [snip oauth info]"' -H 'GData-Version: 2' -H 'X-GData-Client: www.mywebsite.com' -H 'X-GData-Key: key=[snip]' -H 'Slug: video.AVI' -H 'Content-Type: multipart/related; boundary="iUI5C0hzisAHkx9SvaRJ"' -H 'Content-Length: 390193710' -H 'Connection: close' -d /tmp/youtube.xml
Ben yüklemek için veri dosyasını kaydettiğiniz nerede / tmp / youtube.xml olduğunu. Belki de bu kullanım yanlıştır?
Dosya gönderilen ancak daha sonra boş bir cevap almak gibi görünüyor bu yüzden bu yaklaşık 6 dakika sürecek:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0
...
0 0 0 0 0 0 0 0 --:--:-- 0:06:00 --:--:-- 0
curl: (52) Empty reply from server
EDIT:
Ben bu yüzden bunun için normal bir PHP API kütüphanesi kullanamazsınız OAuth kullanıyorum. I outlined here olarak XML dosyasında yer videonun ikili veri ile bir XML dosyası yüklemeniz gerekir
I found another person with the same problem kim okumak ve parçalar dosya göndermek için kod temin vardı. Bu yöntemi deneyerek Ancak, Youtube "Content-Length" başlığı gerekli olduğunu söyleyen bir 411 sayfa dönecekti. Ben bu yüzden bu bir hata olabilir içerik-uzunluk başlığı kuruyorum. Bu yöntem, fsockopen()
işlevini yerine cURL kullanır. [Aslında, yine koduna bakarak, ben sadece yerine "\ n" ile başlıklarını ayıran olduğunu fark "\ r \ n." Bu sorun olabilir. Ben satırbaşları ile deneyin yanı] olacaktır
Edit 2:
Ben "\ r \ n" çalıştı düşünüyorum, ama şimdi kodu ile, tekrar Youtube boş bir yanıt alıyorum.
Herhangi Curl bana bu çalışma almak yardımcı olabilir orada uzmanlar? Ben tamamen bu tarafından stumped.