From 96b678e110f90237d66eb095fa6cf223524d7ff4 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Tue, 21 Jan 2014 11:32:18 -0800 Subject: [PATCH] Various fixes to job running code in Wiki.php * Make it async on Windows * Fixed possible "invalid filename" errors on Windows * Redirect output to dev/null to avoid hanging PHP bug: 60231 bug: 58719 Change-Id: If4e52b86fb3a1bff283dfba3dfac213367f47543 --- includes/Wiki.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/includes/Wiki.php b/includes/Wiki.php index 9a6e6b9e12..56d23b163b 100644 --- a/includes/Wiki.php +++ b/includes/Wiki.php @@ -637,12 +637,19 @@ class MediaWiki { } if ( !wfShellExecDisabled() && is_executable( $wgPhpCli ) ) { - // Start a background process to run some of the jobs. - // This will be asynchronous on *nix though not on Windows. + // Start a background process to run some of the jobs wfProfileIn( __METHOD__ . '-exec' ); $retVal = 1; $cmd = wfShellWikiCmd( "$IP/maintenance/runJobs.php", array( '--maxjobs', $n ) ); - wfShellExec( "$cmd &", $retVal ); + $cmd .= " >" . wfGetNull() . " 2>&1"; // don't hang PHP on pipes + if ( wfIsWindows() ) { + // Using START makes this async and also works around a bug where using + // wfShellExec() with a quoted script name causes a filename syntax error. + $cmd = "START /B \"bg\" $cmd"; + } else { + $cmd = "$cmd &"; + } + wfShellExec( $cmd, $retVal ); wfProfileOut( __METHOD__ . '-exec' ); } else { try { -- 2.20.1