Tovább a tartalomhoz

Háttérfeldolgozás (aszinkron) hibaelhárítása

Mire használ a Gravity Forms háttérfeldolgozást, hogyan ellenőrizheted, hogy működik-e, mit jelentenek a naplóbejegyzések és a gyakori hibakódok, és mit tehetsz ellenük.

A háttérfeldolgozás külön kérésben dolgozza fel a feladatokat, így nem blokkolja az éppen futó műveletet, például az űrlap beküldését.

  • Adatbázis-frissítések.
  • Telemetria.
  • Feedfeldolgozás azokban a kiegészítőkben, amelyek a feed-kiegészítő keretrendszerre épülnek, és jelzik, hogy támogatják az aszinkron feedfeldolgozást.
  • Értesítések. Ezt az Űrlapok → Beállítások oldalon a Háttérértesítések kapcsolóval kapcsolhatod be és ki. Új telepítésnél alapból be van kapcsolva.
  • Egyes külső kiegészítők, például a Gravity PDF, a PDF-et tartalmazó értesítéseket is a háttérben küldhetik, így a beküldés nem késik.

Működik a háttérfeldolgozás az oldalamon?

Szekció neve “Működik a háttérfeldolgozás az oldalamon?”

Ehhez az oldalnak POST kérést kell tudnia küldeni a saját Admin Ajax címére a WordPress HTTP API-jával.

Az Eszközök → Webhely állapota oldalon a sikeres tesztek között legyen ott: az ütemezett események futnak, a HTTP-kérések a várt módon működnek, az oldal végre tud hajtani loopback-kéréseket. Ha bármelyik hiányzik, a háttérfeladatok feldolgozása is gondot okozhat.

Az Űrlapok → Rendszerállapot oldalon a WordPress-környezet részben a Háttérfeladatok soránál Igen értéknek kell állnia. Hiba esetén ugyanitt látod a hibaüzenetet vagy a válasz állapotkódját. A rendszerállapot oldalról a rendszerállapot fejezetben olvashatsz.

  1. Kapcsold be a naplózást az Űrlapok → Beállítások oldalon, és mentsd a beállításokat.
  2. A naplózás oldalán kapcsold be a naplózást a Gravity Forms magjához és az összes kiegészítőhöz.
  3. Indítsd el a feldolgozást: küldd be az űrlapot, vagy futtasd az adatbázis-frissítést a Rendszerállapot oldalról.
  4. Nézd meg a naplókat.

Példa naplóbejegyzések a mag naplójában

Szekció neve “Példa naplóbejegyzések a mag naplójában”

A [processor_slug] lehet gf_upgrader, gf_feed_processor, gf_notifications_processor, gf_[kiegészítő rövid neve]_feed_processor vagy külső kiegészítő azonosítója (például gravitypdf). Nem minden bejegyzés jelenik meg minden beküldésnél.

Naplóbejegyzés (GF_Background_Process::…) Jelentés
dispatch_on_shutdown(): Aborting. Queue is empty for … A sor üres, nincs mit indítani.
dispatch_on_shutdown(): Dispatch delayed until shutdown for … Az indítás az oldal leállásáig késik.
save(): Saving batch [id]. Tasks: [db]. Egy köteg mentése a sorba.
dispatch(): Running for … A feldolgozás indítása.
schedule_event(): Scheduling cron event for … Tartalék cron-esemény ütemezése.
dispatch(): Unable to dispatch tasks to Admin Ajax: … Az Admin Ajax kérés nem sikerült (lásd a hibatáblázatot).
maybe_handle(): Running for … A feldolgozást az Admin Ajax indította.
handle_cron_healthcheck(): Running for … A feldolgozást a cron indította.
handle(): Running via [módszer] request for … A feldolgozás elindult.
handle(): Processing batch [id]; Tasks: [db]. Egy köteg feldolgozása.
update(): Batch [id] updated. Tasks remaining: [db]. A köteg frissítve, ennyi feladat maradt.
handle(): Processing task [n]. Attempt number: [m]. A feladat feldolgozása és a próbálkozás száma.
GF_Feed_Processor::task(): Aborting. Add-on ([slug]) not found … A feedhez tartozó kiegészítő nem található.
GF_Feed_Processor::task(): Aborting. Error occurred during processing of batch … Hiba a köteg feldolgozásakor, a részleteket a bejegyzés tartalmazza.
handle(): Removing task [n] from batch. A feladat kikerült a kötegből.
handle(): Batch completed for … A köteg elkészült.
delete(): Deleting batch [id]. A köteg törlése.
handle(): All batches completed for … Minden köteg kész.
clear_scheduled_event(): Clearing cron event for … A tartalék cron-esemény törlése.

Példa naplóbejegyzések egy kiegészítő naplójában

Szekció neve “Példa naplóbejegyzések egy kiegészítő naplójában”

A GF_Background_Process bejegyzései a kiegészítő naplójában csak a Gravity Forms 2.9.25-ös vagy újabb verziójától jelennek meg. A fenti bejegyzéseken kívül ezeket látod:

Naplóbejegyzés Jelentés
GFFeedAddOn::maybe_process_feed(): Adding feed (#[id] - [név]) to the processing queue for entry #[id]. A feed bekerült a feldolgozási sorba.
GF_Feed_Processor::task(): Preparing to process feed … A feed feldolgozásának előkészítése.
GF_Feed_Processor::task(): Aborting. Entry #[id] not found for feed … A bejegyzés nem található.
GF_Feed_Processor::can_process_feed(): … has already been processed … Reprocessing is NOT supported / NOT allowed / IS allowed. A feedet már feldolgozták ehhez a bejegyzéshez; az újrafeldolgozás nem támogatott, nem engedélyezett vagy engedélyezett.
GF_Feed_Processor::task(): Aborting. Feed … attempted too many times … A feedet túl sokszor próbálták; a bejegyzés mutatja a próbálkozások számát és a korlátot.
GF_Feed_Processor::task(): Starting to process feed … A feed feldolgozása elindult.
GF_Feed_Processor::task(): Aborting. Error occurred during processing of feed … Hiba a feed feldolgozásakor.
GF_Feed_Processor::task(): Completed processing of feed … A feed feldolgozása kész.
Naplóbejegyzés Jelentés
GF_Background_Upgrader::task(): Running callback: … A frissítési lépés fut.
… Callback needs another run: … A lépést még egyszer futtatni kell.
… Finished callback: … A lépés kész.
… Could not find callback: … A lépés nem található.

A legtöbb hiba a kiszolgáló beállításaira vezethető vissza, ezért gyakran a tárhelyszolgáltatóhoz kell fordulnod.

Hiba Mit jelent és mit tegyél
cURL error 6: Could not resolve host A domain DNS-beállításával vagy a kiszolgálóval van gond. Fordulj a tárhelyszolgáltatóhoz.
cURL error 7: Failed to connect … port 443: Connection refused Kiszolgálóoldali probléma okozhatja; a tárhelynek frissítenie kell a csomagokat (PHP, cURL, OpenSSL). Cloudflare használatakor annak SSL-beállítása is okozhatja; néhány esetben a Cloudflare átmeneti kikapcsolása megoldotta, tartós megoldáshoz a Cloudflare támogatásához kell fordulni.
cURL error 28: Operation timed out Időtúllépés. A megoldáshoz keress segítséget a „cURL error 28 in WordPress” témában.
cURL error 35: SSL handshake failure Valami módosítja a kérések URL-jét (lásd a 404-es hibát).
Response code: 401 Az oldalon alapszintű hitelesítés van. Lásd lent.
Response code: 403 Biztonsági szolgáltatás, bővítmény vagy kiszolgálómodul blokkolja az admin-ajax.php elérését. Lásd lent.
Response code: 404 Valami módosítja a kérések URL-jét. Lásd lent.

Ha az oldalon alapszintű hitelesítés van, az http_request_args szűrővel add hozzá az Authorization fejlécet az Ajax-kéréshez:

add_filter( 'http_request_args', 'http_request_args_basic_auth', 10, 2 );
function http_request_args_basic_auth( $args, $url ) {
if ( strpos( $url, admin_url( 'admin-ajax.php' ) ) === 0 ) {
$args['headers']['Authorization'] = 'Basic ' . base64_encode( USERNAME . ':' . PASSWORD );
}
return $args;
}

A példa feltételezi, hogy a USERNAME és a PASSWORD állandót máshol (például a wp-config.php fájlban) definiáltad. Ha nem, írd be közvetlenül az értékeket.

Gyakori okok:

  • egy biztonsági funkciójú bővítmény vagy a témába tett egyedi függvény blokkolja a wp-admin vagy az admin-ajax.php elérését;
  • .htaccess szabályok blokkolják, amelyeket gyakran biztonsági bővítmények tettek be, és a bővítmény kikapcsolása után is megmaradtak;
  • kiszolgálóoldali biztonsági modul vagy tűzfal (például ModSecurity), illetve külső szolgáltatás (például Cloudflare) fogja meg a kérést.

Segíthet a kézi ütközésvizsgálat, ha a hibát nem .htaccess szabály okozza (lásd az ütközésvizsgálat fejezetet). Ha az sem hoz eredményt, kérj segítséget a tárhelyszolgáltatótól.

Ellenőrizd a következőket:

  • a Beállítások → Általános oldalon a Webhely címe (URL) helyes-e;
  • a wp-config.php fájlban a WP_SITEURL nem rossz címre mutat-e;
  • az adatbázis wp_options táblájában a siteurl értéke helyes-e;
  • végezz kézi ütközésvizsgálatot.

Ha ezek után is 404-es hiba látszik a rendszerállapot oldalon, kérj segítséget a tárhelytől.

Közvetlenül azelőtt, hogy a háttérfeldolgozó elküldi az Ajax-kérést, tartalék cron-feladatot is ütemez. Ezt csak akkor használja a rendszer, ha az Ajax-kérés nem indítja el a feldolgozást, vagy időtúllépés miatt a sor kiürülése előtt megszakad. Hogy az oldalad támogatja-e a cron-feladatokat, az ütemezett események fejezetben ellenőrizheted.

Ha egy feed-kiegészítő hibába ütközik a feldolgozás közben, a feladatsor átmenetileg szünetel. A feldolgozásnak a tartalék cron-esemény indulásakor magától folytatódnia kell.

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások