Soms als ik op zoek ben naar een bestand weet ik niet of het misschien op die harde schijf staat of op die andere. Het lijkt me fijn om de hele mappenstructuur ook gewoon in Finder op mijn interne harde schijf te hebben staan. Dat hoeft dan maar een paar kb te kosten lijkt me. Bestaat hier een speciaal soort alias voor die ik misschien via de terminal aan kan maken?
Eigenlijk zou dus van elke harde schijf ik inplug direct de mappenstructuur gekopieerd moeten worden.
Het lijkt me wel heel erg traag, als daar veel files staan.
Als het gaat om een schijf met een paar honderd films en mp3's, moet dat geen probleem zijn, maar als daar bv. broncode staat, met honderden include files, in complexe mappenstructuren ...
Hoe zou je het doen dan? Misschien een automator code gebruiken? Of iets in C maken? Er zijn ook programma's die vanzelf opstarten als je een camera schijf via USB inplugt. En het gaat inderdaad om een paar honderd bestanden vaak.
Ik kan je een stukje code tonen die al een deel regelt.
Ik veronderstel een MS Windows omgeving.
Als je $disks invult met de schijven die je zou verwachten, gaat dit stuk code om de 5 seconden zoeken naar een verandering in de schijven.
't Is al iets
<?php
session_start();
// TODO: aanvullen ...
$disks = array(
'C:',
'D:',
'E:',
);
switch (empty($_GET['p']) ? '' : $_GET['p']) {
default:
unset($_SESSION['available_disks']);
$_SESSION['available_disks'] = array();
echo html('<div id="message">Even geduld</div>', 'Aan het scannen');
break;
case 'poll':
$output = '';
$session_check = array();
foreach ($disks as $disk) {
if (is_dir($disk)) {
$session_check[] = $disk;
$output .= '<form action="?p=scan" method="post"><input type="hidden" name="disk" value="' . $disk . '"><input type="submit" value="' . $disk . '"></form>';
}
}
if (empty($_SESSION['available_disks']) || count($session_check) !== count($_SESSION['available_disks'])) {
echo $output;
$_SESSION['available_disks'] = $session_check;
}
else {
// geen verandering
}
exit;
break;
}
function html($body="", $title="") { // gewoon een functie om alles in een HTML document te wrappen. Wat de notatie betreft: zie "heredoc notation"
return <<<HTML
<!doctype html>
<html>
<head>
<title>$title</title>
</head>
<body>
<h1>$title</h1>
$body
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function($){
var message = $('#message');
var pollInterval = 5000; // om de 5 seconden naar de server kijken
scan_disks();
function scan_disks() {
$.ajax({
url: '?p=poll',
success: function(data) {
if (data != '') {
message.html(data);
}
setTimeout(scan_disks, pollInterval);
}
});
}
});
</script>
</body>
</html>
HTML;
}
?>