Output file append

Output file append
2019-07-21T12:21:24+02:00
2019-07-21T14:34:07+02:00
2022-08-11T13:45:31+02:00
Bokor Béla
Sziasztok
Az alábbi kód feladata az lenne, hogy sorra veszi a tömbben lévő szövegeket,majd mp3 alakítja és egymás után egy file-ba rakja.

Az átalakítás már működik, de mindig csak az utolsó kerül bele.

$kimondszoveg=$_POST['kimondszoveg']; $length = count($kimondszoveg); $downloadFile = fopen("download.mp3", "w"); for ($i = 0; $i < $length; $i++) { $handle = curl_init(); $szoveg = curl_escape($handle, $kimondszoveg[$i]); $url = "https://code.responsivevoice.org/getvoice.php?t=".$szoveg."&tl=hu-HU"; curl_setopt($handle, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($handle, CURLOPT_FTPAPPEND, true); curl_setopt($handle, CURLOPT_FILE, $downloadFile); curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); curl_exec($handle); curl_close($handle); } fclose($downloadFile);
Mutasd a teljes hozzászólást!
Hali!

1. Ne 'w' móddal, hanem 'a' móddal nyisd meg a fájlt. Természetesen, mivel így hozzáfűzi a létező fájlhoz a tartalmat, az elején törölni kell a fájlt.
2. Végezz ellenőrzéseket mind a fájl, mint a CURL-session nyitásakor.
3. Teljesen felesleges a ciklusban mindig megnyitni és lezárni a CURL-session-t, elég csak a ciklus előtt (nyitni) és a ciklus után (zárni).
4. Így már felesleges az állandó opciókat is a ciklusban beállítani (elegendő csak a nyitás után, még a ciklus előtt).
5. A CURLOPT_FTPAPPEND opciónak itt nincs jelentősége.

Próbáld ki a következő kódot:
$kimondszoveg = $_POST['kimondszoveg']; $fn = 'download.mp3'; $urlTpl = 'https://code.responsivevoice.org/getvoice.php?t=%s&tl=hu-HU'; if (file_exists($fn)) { unlink($fn); } if ($fh = fopen($fn, 'a')) { if ($ch = curl_init()) { curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FILE, $fh); foreach ($kimondszoveg as $sz) { $sz = curl_escape($ch, $sz); curl_setopt($ch, CURLOPT_URL, sprintf($urlTpl, $sz)); curl_exec($ch); } curl_close($ch); } fclose($fh); }
Szerk.: Ha a ciklusból kiveszed a CURL-session nyitását/zárását, valamint a CURLOPT_FILE opció megadását, akkor 'w' módban nyitott fájllal is működni fog.

Mutasd a teljes hozzászólást!

abcd