Skip to content

Instantly share code, notes, and snippets.

@bgadrian
Created March 16, 2015 17:01
Show Gist options
  • Save bgadrian/9356ad66b620ac69a08f to your computer and use it in GitHub Desktop.
Save bgadrian/9356ad66b620ac69a08f to your computer and use it in GitHub Desktop.
Store multiple images on server
// snippet for blog post
// http://btools.eu/read/2013/how-to-store-multiple-images-or-documents-on-server/
<?php
//we presume we have an unique ID for every picture
for ($id_pic = 1; $id_pic < 10000; $id_pic += 100)
{
# echo PHP_EOL.getPadImgFolder($id_pic).'/'.$id_pic.'.jpg';
# echo PHP_EOL.getOrdImgFolder($id_pic).'/'.$id_pic.'.jpg';
# echo PHP_EOL.getSparseImgFolder($id_pic).'/'.$id_pic.'.jpg';
# echo PHP_EOL.getSubPadImgFolder($id_pic).'/'.$id_pic.'.jpg';
echo PHP_EOL.getDateImgFolder($id_pic).'/'.$id_pic.'.jpg';
}
//one root
function getPadImgFolder($id,$digits_per_folder=3,$max_digits=10)
{
return substr(str_pad($id,$max_digits,'0',STR_PAD_LEFT),0,$max_digits-$digits_per_folder);
}
//for very large databases
function getSubPadImgFolder($id,$digits_per_folder=3,$max_digits=30)
{
$pad = str_pad($id,$max_digits,'0',STR_PAD_LEFT);
return chunk_split($pad,$digits_per_folder,DIRECTORY_SEPARATOR);
}
function getOrdImgFolder($id,$digits_per_folder=3)
{
return (string)ceil($id / (str_pad('1',$digits_per_folder+1,'0')));
}
function getDateImgFolder($timestamp)
{
return
date('Y'.DIRECTORY_SEPARATOR
.'m'.DIRECTORY_SEPARATOR
.'d',$timestamp)
;
}
function getSparseImgFolder($id)
{
#$hash = hash('sha1',$id,false);
$hash = hash('crc32',$id,false);
return
substr($hash,0,3).DIRECTORY_SEPARATOR
}
return;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment