PHP: Ha a fájl tartalma frissül, frissítse az oldal tömb adatait

PHP: Ha a fájl tartalma frissül, frissítse az oldal tömb adatait
2022-04-15T15:03:46+02:00
2022-05-01T19:12:48+02:00
2022-10-15T21:21:07+02:00
NorbertSr
Adott egy szoftver, mely különböző időpontokban frissít egy data.txt fájl tartalmát (ez egy rádió, tehát adott hangfájl terjedelmétől függ, tehát változó idő).
A data.txt fájlban összesen 6 információ van adott karakterrel elválasztva (ez nekem egy tömb lesz).
A php fájlomban megnyitom olvasásra, feltöltöm a tömböt stb.
Jelenleg
$data_cell[0]
-tól
$data_cell[5]
-ig.
Ezen adatokat pedig ugyan ezen php fájlomban a html body részében egy táblában formázva megjelenítem.
Eddig sajnos csak statikusan működik, azaz eddig jutottam, hogy most kéne az a lépés, hogy a "háttérben" mondjuk 5 másodpercenként ellenőrizné egy script, hogy van e valami változás a data.txt-be, s ha van, csak akkor írja felül a megjelenítendő megváltozott tartalmat a táblába, lehetőleg a teljes oldal újratöltése nélkül.
Lényegében a legprecízebb megoldás az lenne, ha csak azon adatokat töltené újra és jelenítené meg, ami megváltozott.
Bocsánat a szakmaiatlan fogalmazásért, de erősen az is vagyok...
Olvastam, hogy egy ajax script ezt képes megoldani, de én nem tanultam.
Nekem ez pl egy szimpla script, de ez csupán a teljes oldalt újra tölti és fix időpontokban:

<script> var counter = 5; // VISSZASZÁMLÁLÓ var count_down = window.setInterval(function () { counter--; if (counter >= 0) { var span; span = document.getElementById("display_counter"); span.innerHTML = counter; } if (counter === 0) { clearInterval(counter); } }, 500); var page_refress = window.setInterval('refresh()', 5000); // AZ OLDAL FRISSÍTÉSE, ÚJRATÖLTÉSE function refresh() { window.location.reload() ;} function stopFunction() { clearInterval(count_down); clearInterval(page_refress); } </script>
Mutasd a teljes hozzászólást!
Egy kicsit beújítottam a projektemet. Mostantól még egyszerűbb a kliens elkészítése.
A headerben csak hivatkozni kell egy script tag-el a szerveren található plugin.js-re (Azaz a szerver egyfajta kliensoldali js cdn-ként is funkcionál)
plédául

vagy 

(Természetesen a saját szervered esetén ezt ki kell cserélni a te domainedre vagy IP címedre)

A html body részébe csak egy üres div kell.

<div id="nowplayed"></div>
Majd a záró body tag előtt egy script tagben meghívni ezt

getPlugin('nowplayed', 'SOCKET CLIENT')
vagy 

getPlugin('nowplayed', 'SOCKET CLIENT')
(A szerver cím itt is kicserélendő)

Itt van néhány példa a 

(Először indítsd el a szevert, különben a kliensek nem fognak működni)

Client Codepen példa: https://codepen.io/bzozoo/full/eYVOzbe

Client JSFIDDLE példa: GET NOW PLAYED CARD FROM PLUGIN - CODESANDBOX SERVER - JSFiddle - Code Playground


CONFIG.INI fájlba raktam a szerver fontos beállításait. 

SOCKET-SERVER-CLIENT-DEMO/config.ini at main · bzozoo/SOCKET-SERVER-CLIENT-DEMO

GitHub - bzozoo/SOCKET-SERVER-CLIENT-DEMO: A fictional radio gives you currently playing music Demo
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd