Autor Zpráva
OldřichSitko
Profil *
Potřeboval bych uložit XML z URL adresy do souboru. Na internetu jsem našel tento script, ale bohužel mě vypisuje chybu :(

Fatal error: Call to a member function save() on a non-object in /data/web/virtuals/22545/virtual/www/domains/


  $url = "http://example.com/feed/xml.php";
  $fp = fopen ('file.xml', 'w+');
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_TIMEOUT, 50);
  curl_setopt($ch, CURLOPT_FILE, $fp);
  curl_exec($ch);
  curl_close($ch);
  $ch->save('file.xml');
  fclose($fp);
Alphard
Profil
Potřebujete ten timeout, nebo by vám stačilo copy()?
OldřichSitko
Profil *
Je nutné, aby CURL byl zabezpečen kvůli tomu, že URL tam bude. Může se stát, že hosting na dané URL třeba nepojede. Ten timeout ... nevím, možná tam nemusí být. Jde mě o to, abych data uložil na FTP a to pouze tehdy, pokud URL opravdu je OK. Nerad bych uložil prázdné XML atd.
Chro
Profil
Na tak jednoduchou činnost, jako je prosté uložení dat do souboru, jsou funkce fopen, fwrite, fclose zbytečné, resp. zbytečně komplikovaný zápis. Vymaž je a použij na konci funkci
file_put_contents('file.xml', $ch, LOCK_EX);
OldřichSitko
Profil *
Napsalo mě to chybu :(

Warning: file_put_contents(): 1 is not a valid stream resource in /data/web/virtuals/22545/

  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_exec($ch);
  curl_close($ch);
  file_put_contents('file.xml', $ch, LOCK_EX);
Chro
Profil
Jo aha, chybí před uložením dat výstup dat z curl exec, takže opravit na
$result = curl_exec($ch);
curl_close($ch);
file_put_contents('file.xml', $result, LOCK_EX);

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: