Ako sa vyhnut @ pri chybach ? – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Ako sa vyhnut @ pri chybach ? – PHP – Fórum – Programujte.comAko sa vyhnut @ pri chybach ? – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
nord0
Návštěvník
7. 7. 2017   #1
-
0
-

Zdravim vsetkych, 
prosim vas o malu radu. Velmi casto vidim v roznych rieseniach puzivat '@' pre (asi) potlacenie errorov a zaroven pri kazdom tom rieseni vidim komentare, ze je to velmi zle riesenie, no nikdy som sa nestretol s radou ako riesit tento problem. 

napriklad 

$dom = new DOMDocument;
@$dom->loadHTML(file_get_contents($url));

Toto som videl uz vela krat. Ako taketo nieco osetrit, aby to fungovalo rovnako ako s '@' a zaroven to bolo osetrene korektne? Napada ma riesit to vynimkov, ale co dalej ? ak je nejaky error co s nim urobit, asi logovat, ale predsa sa pytam :) Ak je to len error, resp. nejaka hlaska ktoru som ochotny prekusnut a i napriek tomu pokracovat (teda chcem si vsimnut ze je nieco zle, ale moc mi to nevadi) ? 

Ak je to pre niekoho jednoducha vec tak si kludne kopnite, ale budem rad za akukolvek odpoved, pokial bude k tomuto problemu a sposobu ako ho riesit :) Dakujem

Nahlásit jako SPAM
IP: 158.193.99.–
Reklama
Reklama
Kit+12
Guru
7. 7. 2017   #2
-
0
-

#1 nord
Zrovna uvedený případ řeším podobně, protože nic lepšího jsem dosud nenašel. Pokud je totiž načítané HTML nevalidní, což bývá poměrně často, zbytečně to hlásí hromadu chyb. Je však nutné počítat i se skutečnými chybami, například že se obsah daného URL nenačte.

Proto je rozumné to rozdělit na více řádek: 

$dom = new DOMDocument();
$html = file_get_contents($url)
@$dom->loadHTML($html);

Pokud selže funkce file_get_contents(), budu o tom stále informován.
 

Nahlásit jako SPAM
IP: 85.93.112.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
nord0
Návštěvník
13. 7. 2017   #3
-
0
-

#2 Kit
Podarilo sa mi trocha pohnut, snad spravnym smerom.

if (!file_exists($cookie_file) || !is_writable($cookie_file)){
   $myfile = fopen($cookie_file, "w");
   fclose($myfile);
}
if (!file_exists($cookie_file) || !is_writable($cookie_file)){
   echo 'Cookie file missing or not writable.';
   die;
}

$c = curl_init($url);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_HEADER, 0);
curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_file);
$page = curl_exec($c);
curl_close($c);

$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($page);//file_get_contents($url, false, $context));

foreach ($tags as $tag) {
   $data[$tag] = $dom->getElementsByTagName($tag);
}

Je to riesenie pre jednu aplikaciu kde vyberam konkretny obsach zo zatial stoviek stranok a este to nepadlo, tak uvidim ako sa tomuto rieseniu bude darit a jdalej :)

Nahlásit jako SPAM
IP: 158.193.99.–
Kit+12
Guru
13. 7. 2017   #4
-
0
-

#3 nord
Pokud bude to HTML nevalidní, bude to chrlit chybové hlášky.

To šachování s $cookie_file je tam k čemu?

Nahlásit jako SPAM
IP: 85.93.112.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 113 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý