From 79457ee9c3eb4bfb78d53f51e8d62a4d796ee522 Mon Sep 17 00:00:00 2001 From: Knah Tsaeb Date: Fri, 10 Jul 2015 12:09:20 +0200 Subject: [PATCH] [add] lock for prevent multi generation of same url --- bin/thumb_server.sh | 6 +++++- index.php | 23 ++++++++++++++--------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/bin/thumb_server.sh b/bin/thumb_server.sh index e7fe31b..0ae869c 100755 --- a/bin/thumb_server.sh +++ b/bin/thumb_server.sh @@ -109,6 +109,7 @@ case $renderType in echo 0 fi rm "../cache/tmp/$hashUrl.png" + rm "../cache/tmp/$hashUrl.lock" ;; # thumbnail + complete tc) @@ -125,6 +126,7 @@ case $renderType in else echo 0 fi + rm "../cache/tmp/$hashUrl.lock" ;; # thumbnail + realsize tr) @@ -142,6 +144,7 @@ case $renderType in else echo 0 fi + rm "../cache/tmp/$hashUrl.lock" ;; # thumbnail + realsize + complete trc) @@ -161,7 +164,8 @@ case $renderType in else echo 0 fi - rm "../cache/tmp/$hashUrl.png" + rm "../cache/tmp/$hashUrl.png" + rm "../cache/tmp/$hashUrl.lock" ;; esac diff --git a/index.php b/index.php index 432b763..1589f99 100644 --- a/index.php +++ b/index.php @@ -151,13 +151,18 @@ function launchScript($url, $hashUrl, $width, $size, $waitForResult = false) { $renderType = 't'; } if ($GLOBALS['config']['disableExec'] === false) { - chdir('bin/'); - if ($waitForResult === false) { - exec('bash thumb_server.sh '.$url.' '.$hashUrl.' '.$width.' '.$size.' '.$renderType.' > /dev/null &', $result); + if (!file_exists('../cache/tmp/'.$hashUrl.'.lock')) { + touch('../cache/tmp/'.$hashUrl.'.lock'); + chdir('bin/'); + if ($waitForResult === false) { + exec('bash thumb_server.sh '.$url.' '.$hashUrl.' '.$width.' '.$size.' '.$renderType.' > /dev/null &', $result); + } else { + exec('bash thumb_server.sh '.$url.' '.$hashUrl.' '.$width.' '.$size.' '.$renderType.' 1', $result); + } + chdir('../'); } else { - exec('bash thumb_server.sh '.$url.' '.$hashUrl.' '.$width.' '.$size.' '.$renderType.' 1', $result); + return 0; } - chdir('../'); } else { makeQueueFile($url, $hashUrl, $width, $size, $renderType); $result = 0; @@ -328,7 +333,7 @@ function removeOlderThan($dir = 'cache/img/shortLive') { function pathForFile($size, $hashUrl) { $startPath = substr($hashUrl, 0, 2).'/'.substr($hashUrl, 2, 2).'/'; - if(empty($size)){ + if (empty($size)) { $size = tryDetectSize($startPath.$hashUrl); } $file = 'cache/img/'.$size.'/'.$startPath.$hashUrl; @@ -412,9 +417,9 @@ function n_print($data, $name = '') { echo '

', $name, '

'; echo '
'; echo ' - ', basename($aBackTrace[0]['file']), ' ligne => ', $aBackTrace[0]['line'], ' + ', basename($aBackTrace[0]['file']), ' ligne => ', $aBackTrace[0]['line'], ' '; - echo '
',   htmlentities(print_r($data, 1)), '
'; + echo '
',    htmlentities(print_r($data, 1)), '
'; echo '

@@ -635,7 +640,7 @@ if (!empty($ui['request']) && $ui['p'] !== 'install' && $ui['p'] !== 'login' && \ No newline at end of file