Replace the while loop with for loop to prevent launching subshell in the sessionclean script

This commit is contained in:
Ondřej Surý 2016-04-27 23:10:04 +02:00
parent 5012075864
commit 62c00a154f

View file

@ -21,14 +21,15 @@
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
SAPIS="apache2:apache2\napache2filter:apache2\ncgi:php@VERSION@\nfpm:php@VERSION@-fpm\ncli:php@VERSION@\n"
SAPIS="apache2:apache2 apache2filter:apache2 cgi:php@VERSION@ fpm:php@VERSION@-fpm cli:php@VERSION@"
# Iterate through all web SAPIs
(
proc_names=""
for version in $(/usr/sbin/phpquery -V); do
printf "$SAPIS" | { \
proc_names=""
while IFS=: read -r conf_dir proc_name; do
for sapi in ${SAPIS}; do
conf_dir=${sapi%%:*}
proc_name=${sapi##*:}
if [ -e /etc/php/${version}/${conf_dir}/php.ini ]; then
# Get all session variables once so we don't need to start PHP to get each config option
session_config=$(PHP_INI_SCAN_DIR=/etc/php/${version}/${conf_dir}/conf.d/ php${version} -c /etc/php/${version}/${conf_dir}/php.ini -d "error_reporting='~E_ALL'" -r 'foreach(ini_get_all("session") as $k => $v) echo "$k=".$v["local_value"]."\n";')
@ -41,7 +42,7 @@ for version in $(/usr/sbin/phpquery -V); do
printf "%s:%s\n" "$save_path" "$gc_maxlifetime"
fi
fi
done }
done
done
# first find all open session files and touch them (hope it's not massive amount of files)
for pid in $(pidof $proc_names); do