Event aszinkron küldése

Vedd fel velünk a kapcsolatot ezen a számon: +36-30-925-6635

Az események API-n keresztüli, aszinkron beküldésére akkor lehet szükség, ha kockázatosnak tűnik az élő weblap backend kódjába egy külső API hívását bekötni. Több lehetőség is van ennek elkerülésére

HTTP timeout beállítása

Mivel a FindGore által biztosított kliens nem generál sem PHP error-t, sem Exception-t (legalábbis a FindGore csapata által tesztelt szerver konfigurációkon), így a sikertelen API hívás nem befolyásolja a PHP kód további futását. Hálózati probléma esetén lassulás léphet fel, ennek a hatását lehet csökkenteni a kliens HTTP timeout-jának csökkentésével. Ezt a FindGoreNativeClient::API_TIMEOUT konstans értékének csökkentésével lehet megtenni. Ez egy egész szám, ami a timeout hosszát határozza meg másodpercben. A legkisebb érték 1 lehet.

A timeout elérése nem egyértelmű jele annak, hogy a FindGore rendszere a mér elindított kérést nem fogja feldolgozni, maximum nem válaszolta meg a kérést a megadott időkorláton belül.

Event küldés indítása új szálon

Párhuzamosítással teljesen külön lehet választani az esemény küldését és a weblap kiszolgálását. Ehhez lehet használni a pcntl_fork() függvényt. A gyerek szálon érdemes az API hívást indítani, és a szülő szálon kiszolgálni a weblapot. A gyerek szál gyakorlatilag le is állhat amint az API hívás megtörtént.

Event küldés a weblap kiszolgálása után

Bevált módszer a weblap kiszolgálásáért közvetlenül nem felelős, kritikus kódok futtatását a HTTP kapcsolat lezárását követően futtatni, ezt az esemény küldésénél is megtehetjük. Erre egy kiindulási kód:
ignore_user_abort(true);
set_time_limit(0); //ezt érdemes annyira állítani, ami még elfogadható
ob_start();
// html kód generálása
header('Content-Length: '.ob_get_length());
echo ob_get_contents();
ob_end_flush();
ob_flush();
flush();
// API hívás(ok) indítása

Event küldése a háttérben

Az eseményeket be lehet egy időzített script-ből is küldeni, ebben az esetben viszont két dologgal tisztában kell lenni:

Csak akkor érdemes így küldeni az adatokat, amennyiben ezek a megkötések nem befolyásolják az üzleti igényeket, illetve a mérési módszertant.