背景:
session_start();
$stop_words = $_SESSION['stop_words'];
....
cmd = "$PYTHON_ENVS main.py $stop_words 2>&1";
exec($cmd);
一旦开始执行cmd,要等到cmd返回结果才能访问其他页面。
原因:php会话文件被加锁导致其他页面阻塞
<?php
// 如果确定不修改会话中的数据,
// 我们可以在会话文件读取完毕之后立即关闭它
// 来避免由于给会话文件加锁导致其他页面阻塞
session_start([
'cookie_lifetime' => 86400,
'read_and_close' => true,
]);
如果要修改会话变量的话,可以在修改完之后用session_write_close()
session_write_close(); // 释放锁定 避免cmd阻塞进程 但cmd在后端还是会执行
cmd = "$PYTHON_ENVS main.py $stop_words 2>&1";
exec($cmd);