Autor | Zpráva | ||
---|---|---|---|
H107 Profil |
#1 · Zasláno: 16. 2. 2018, 09:16:02
Zdravím,
mám stránku, na ktorej java script v pravidelnom intervale aktualizuje obrázok zasielaný z IP kamery cez FTP na server. Link na obrázok pre java script zabezpečuje samostatné php z dôvodu, že kamera vie posielať len obrázky vždy s iným názvom (v tvare: číslo-kamery(názov-kamery)_X_RRRRMMDDHHMMSS_poradové-číslo.jpg). Chcel by som, aby sa pod zobrazovaným obrázkom zobrazoval aj časový údaj jeho vytvorenia, resp. stačila by aj časť názvu (RRRRMMDDHHMMSS). Tu sú kódy: java <script type="text/javascript"> refreshImage = function(){ img = document.getElementById("K1"); img.src="kamera-1.php?rand=" + Math.random(); } window.onload=window.setInterval(refreshImage, 1*1000); </script> <style> .rotate180 { -webkit-transform: rotate(180deg); -moz-transform: rotate(180deg); -o-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); </style> </head> <body> <div class="rotate180"> <img id="K1" src="kamera-1.php" alt="kamera-1" /> </div> </body> kamera-1.php <?php if ($handle=opendir('./kamera-1/')) { while ($file = readdir($handle)) { $polozky[count($polozky)] = $file; } closedir($handle); sort($polozky); $i = sizeof($polozky); $link= 'kamera-1/'.$polozky[$i-2]; header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$link); exit(); } reset($polozky); ?> Celé som to poskladal podľa rôznych návodov z netu, som v tejto oblasti laik a preto píšem sem. Vedel by mi niekto poradiť? Vďaka. |
||
Keeehi Profil |
Tak předně jsem to php trochu učesal. Navíc není potřeba všechny soubory načíst do pole a to řadit (což je náročnější operace) ale při průchodu složkou stačí najít maximum.
<?php $path = 'kamera-1/'; // function deleteOld($file) { // preg_match('~_(\d{10})_\d+\.jpg~', $file, $matches); // $time = (int) $matches[1]; // $now = (int) date('YmdHis') // // if ($time < $now - 60) { // unlink($file); // } // } if ($dir = opendir('./' . $path)) { $file = ""; while(($currentFile = readdir($dir)) !== false) { if ( $currentFile === '.' || $currentFile === '..' ) { continue; } if (empty($file)) { $file = $currentFile; continue; } if (strcmp($currentFile, $file) > 0) { // deleteOld($path . $file); $file = $currentFile; // continue; } // deleteOld($path . $currentFile); } closedir($dir); echo $path . $file; } Co se týče skriptu, bylo třeba to celé předělat. Problém je, že nejde zjistit, na jakou URL se přesměruje. Takže se na to jde jinak. AJAXem se zavolá ten PHP skript, ten vrátí jméno souboru javascriptu a ten už si sám zajistí změnu src na potřebnou hodnotu. Jelikož zná jméno souboru, může si z něj vytáhnout i tu časovou známku. <html> <head> <style> .rotate180 { -webkit-transform: rotate(180deg); -moz-transform: rotate(180deg); -o-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } </style> </head> <body> <div class="rotate180"> <img id="K1" alt="kamera-1" /> </div> <div id="time"></div> <script type="text/javascript"> (function (w, d) { var img = d.getElementById('K1'); var time = d.getElementById('time'); var re = /_(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})_\d+\.jpg/; var zeroTrim = function (v) { return v.replace(/^0+/, ''); } var refreshImage = function () { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4) { img.src = xhr.responseText; var found = xhr.responseText.match(re); time.innerHTML = zeroTrim(found[3]) + '. ' + zeroTrim(found[2]) + '. ' + zeroTrim(found[1]) + ' ' + zeroTrim(found[4]) + ':' + found[5] + ':' + found[6]; } } xhr.open('GET', 'kamera-1.php?rand=' + Date.now()); xhr.send(); }; w.setInterval(refreshImage, 1 * 1000); refreshImage(); })(window, document); </script> </body> </html> |
||
Časová prodleva: 6 let
|
0