Jump to content
php.lv forumi

MySQL server has gone away


pilots

Recommended Posts

cron jobs ir uztaisīts php failam, kurš mēdz ilgi izpildīties. tas, ko viņš dara ir iet cauri vairākām rss barotnēm un saturu importē uz mysql datubāzi. rss ziņu savācējs.

 

par šo error - MySQL server has gone away, cik palasīju, tad wait timeout varbūt ir pie vainas. cik paskatījos no myadmin, tad šobrīd tas ir 20.

 

vai šo uzstādījumu var izmainīt to norādot php failā? kādi vēl šajā situācijā varētu būt iemesli un risinājumi?

Edited by pilots
Link to comment
Share on other sites

varbūt sadali kkā pa daļām tās rss lasīšanas...

 

vai piem vispirms nopingo visas - pārbaudi va serveri on un tad ar nākošo piegājienu kopē saturus. Piem ja kāds serveris būtu off, tad tā lieta apstātos uz ilgāku brītiņu.

 

Vēl (pa ausu galam esmu dzirdējis), ka var kkā multitheating taisīt ~ laist vairākus procesus reizē... tad pie kāda servera aizkavēšanas, netiktu aikavēts viss...

Link to comment
Share on other sites

precīzāk varētu to vārdu - multitheating? savādāk google neko pa tēmu neatrod.

 

un kā veikt efektīvi pārbaudi vai serveri ir onlainā? pie daudz rss barotnēm tas tāpat šķiet būs ilgi.

 

droši vien kautkā jādala pa daļām rss saraksts, pie lielākiem daudzumiem.

Link to comment
Share on other sites

cron jobs ir uztaisīts php failam, kurš mēdz ilgi izpildīties. tas, ko viņš dara ir iet cauri vairākām rss barotnēm un saturu importē uz mysql datubāzi. rss ziņu savācējs.

 

par šo error - MySQL server has gone away, cik palasīju, tad wait timeout varbūt ir pie vainas. cik paskatījos no myadmin, tad šobrīd tas ir 20.

 

vai šo uzstādījumu var izmainīt to norādot php failā? kādi vēl šajā situācijā varētu būt iemesli un risinājumi?

 

Nē šo settingu nevar nomainīt no PHP.. un visdrīzāk konkrētā wait_timeout 20 sekunžu maksimālais idle laiks konkrētā gadijumā arī iedarbojas..

 

Risinājums: ieliec vienkārši mysql_connect() (ar visiem parametriem protams) pirms katra sql kverija (pēc katra ilgā izpildes procesa - proti tajās vietās kur tev izmet to 'Gone away') un php vajadzētu rekonektēties ja būs pazaudējis konekciju...

Nekādus multithreading vipendronus nav jātaisa :)

Link to comment
Share on other sites

es īsti nezinu, kurās vietās man izmet to ziņojumu (proti, pie šī ziņojuma netiek izdots kurā rindā tas noticis, kā tas ir ar erroriem) - gone away.. vai nav tā ka kamēr skripts tur tos rss ierakstus ķersta, tas izvēršas ilgā pasākumā un tas mysql has gone away ziņojums tiek izdots neatkarīgi no tā līdz kurai vietai skripts ticis?

 

droši vien šādos rss ierakstu savākšanas pasākumos, vislielākā bēda ir ka bieži tā rss atvēršana aizņem pa daudz laika, vai arī vispār neizdodas pieslēgties.

Edited by pilots
Link to comment
Share on other sites

vai nav tā ka kamēr skripts tur tos rss ierakstus ķersta, tas izvēršas ilgā pasākumā un tas mysql has gone away ziņojums tiek izdots neatkarīgi no tā līdz kurai vietai skripts ticis?

Nē gone away vajadzētu būt response uz mysql_query() vai mysql_error() izdruka (paskaties kur tev tādi ir).

Testa nolūkos var salikt mysql_connect pirms visiem kverijiem un tad paskatīties kas notiek.. vai arī pa vienam un skatīties vai pazūd, taču vienkāršāk jau padrukāt laukā kaut ko echo 'rindas 10'.mysql_error();

Link to comment
Share on other sites

×
×
  • Create New...