MINOR added locking to static publisher to avoid two queues running at the same time. (from r87792) (from r98164)

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@102757 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Ingo Schommer 2010-04-14 02:14:34 +00:00
parent d87a65240f
commit 6c300f5659
2 changed files with 9 additions and 2 deletions

View File

@ -971,6 +971,7 @@ class LeftAndMain extends Controller {
* @return int
*/
public function currentPageID() {
SS_Backtrace::backtrace();
if($this->request->getVar('ID')) {
return $this->request->getVar('ID');
} elseif ($this->request->param('ID') && is_numeric($this->request->param('ID'))) {

View File

@ -44,6 +44,11 @@ class RebuildStaticCacheTask extends Controller {
echo "Rebuilding cache.\nNOTE: Please ensure that this page ends with 'Done!' - if not, then something may have gone wrong.\n\n";
$page = singleton('Page');
$cacheBaseDir = $page->getDestDir();
if (file_exists($cacheBaseDir.'/lock') && !isset($_REQUEST['force'])) die("There already appears to be a publishing queue running. You can skip warning this by adding ?/&force to the URL.");
touch($cacheBaseDir.'/lock');
foreach($urls as $i => $url) {
if($url && !is_string($url)) {
@ -68,8 +73,6 @@ class RebuildStaticCacheTask extends Controller {
if(!isset($_GET['urls']) && $start == 0 && file_exists("../cache")) {
echo "Removing stale cache files... \n";
flush();
$cacheBaseDir = $page->getDestDir();
if (FilesystemPublisher::$domain_based_caching) {
// Glob each dir, then glob each one of those
foreach(glob(BASE_PATH . '/cache/*', GLOB_ONLYDIR) as $cacheDir) {
@ -89,6 +92,9 @@ class RebuildStaticCacheTask extends Controller {
}
echo "Rebuilding cache from " . sizeof($mappedUrls) . " urls...\n\n";
$page->extend('publishPages', $mappedUrls);
if (file_exists($cacheBaseDir.'/lock')) unlink($cacheBaseDir.'/lock');
echo "\n\n== Done! ==";
}