Štruktúru na vnútornej sieti možno rozdeliť na 2 rôzne stroje (nieje nutnosť):
- PC s webkamerou (blízo miesta umiestnenia kamery)
- server s php a prístupom na web
PC s kamerou
Na PC s pripojenou kamerou je vhodné použiť windows, ak je kamera lepšie podporovaná (driver) pod týmto OS. Ako software pre pravidelné fotenie možno použiť rôzne voľne dostupné alternatívy, napr YAWCAM. Dôležité je ukladanie fotiek do zdieľaného adresára zo servera s php. YawCam pridá timestamp priamo do jpg |
Server s PHP
Na serveri sa spúšťa v minútových intervaloch (cron / scheduler) php so skriptom, ktorý prehliada zdieľaný adresár. Ak nájde novú fotku, nahrá ju http post príkazom na stránku webkamery umiestnenú na hostingu.
uploadovací php skript (neobsahuje kontroly na novú fotku):
<?php
// POZRI SUBOR
$files = scandir('D:\Parkovisko',1);
print($files[1]);
// UPLOAD
$ch = curl_init();
$header = array('Content-Type: multipart/form-data');
$data = array('MAX_FILE_SIZE' => '150000', 'userfile' => '@D:\Parkovisko\\'.$files[1]);
curl_setopt($ch, CURLOPT_URL, 'http://webkamera.ic.cz/upload/index.php');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, 'proxy:8080');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'POST');
// curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible;)");
curl_setopt($ch, CURLOPT_HTTPHEADER,array("Expect: "));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$premenna=curl_exec($ch);
// print_r($premenna);
?>
Hosting
Na webovom hostingu sú dve komponenty:
- skript pre upload
- stránka zobrazujúca webcam
Skript pre upload by mohol byť kvôli bezpečnosti v inom adresári ako stránka s webcam. Zároveň by mal obsahovať základnú ochranu proti spamu (uploadu iných vecí ako JPG obrázkov).
skript pre upload:
<html>
<head>
</head>
<body>
<?php
// KONTROLA NA TYP ABY SEM NEPCHALI SPAM
if ($_FILES['userfile']['type'] == "image/jpeg") {
// KONTROLA NA VELKOST
if ($_FILES['userfile']['size'] > 0) {
$uploaddir = '/home/free/ic.cz/w/webkamera/root/www/webka/';
$uploadfile = $uploaddir . 'foto.jpg';
// KONTROLA NA USPESNY UPLOAD A MOVE
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "Success.\n";
// echo 'Ciel je <a href="http://webkamera.ic.cz/webka/foto.jpg">tu</a>'."\n";
} else {
echo "Error in upload!\n";
if ($_FILES['userfile']['error'] == 2) {
echo "File too big.\n";
}
}
} else {
// ZLA VELKOST SUBORU
echo "Sorry, zero size.\n";
}
} else {
// ZLY TYP SUBORU
echo "Sorry, not allowed.\n";
}
// echo "\n\nHere is some more debugging info:";
// print_r($_FILES);
?>
</body>
</html>
Stránka zobrazujúca webcam môže byť jednoduchá statická html stránka s obrázkom. Dynamická verzia (php) prináša výhody v štatistike prístupov, dynamickom preformátovaní na mobilnú platformu. V prípade problémov s agresívnou cache je možné dynamicky meniť názov obrázka, aby sa pri každom zobrazení načítal určite znova.
Nastavenie cache
Dobrým nápadom je zníženie cache (mod_expires) pre obrázky v danom adresári. Toto je možné pridaním kódu do súboru .htaccess (apache).
súbor .htaccess v adresári s fotkou (webhosting):
# zakazeme zobrazenie obsahu adresara
Options -indexes
# cacheovanie
<IfModule mod_expires.c>
ExpiresActive On
# expirovanie podla typu suboru, pocet sekund po accesse
ExpiresByType image/gif A600
ExpiresByType image/png A600
ExpiresByType image/jpg A20
ExpiresByType image/jpeg A20
ExpiresByType text/html A864000
ExpiresByType text/javascript A864000
ExpiresByType text/plain A864000
</IfModule>
Pri požiadavke na zobrazenie cez celú obrazovku napr. mobilného telefónu je možné použiť dynamické resizovanie obrázkov podporované štandardom HTML 4.01:
<img src='webka/foto.jpg' alt='webkam' width="100%">
Ako dosť dôležité sa javí nájsť vhodný pomer medzi kvalitou obrázku, časom refreshu a ich vplyvom na mesačný prenos dát. Podľa toho je vhodné nájsť si hosting, ktorý nebude mať problém s GB trafficom.
Žiadne komentáre:
Zverejnenie komentára