我在标准模式下使用 php 在谷歌云平台上运行应用程序。我用来session_set_save_handler
将会话存储在 mysql 数据库中。
.php 文件
...
$mysqli = new mysqli($config->host, $config->user, $config->password, $config->db, $port, $socket);
// test connection, works fine.
$mysqli->query("INSERT INTO `sessions` (`ID`, `SessionID`, `Data`, `DateTouched`) VALUES (NULL, 'aaa1', 'aa1', '21')");
$CurrentTime = time();
function sess_open($sess_path, $sess_name) {
echo "session open - sess_path: " . $sess_path . "session_name " . $sess_name . "<br />";
return true;
}
function sess_close() {
echo "session close" . "<br />";
return true;
}
...
function sess_write($sess_id, $data) {
GLOBAL $mysqli;
echo 'session write';// never called
$CurrentTime = time();
$mysqli->query("UPDATE sessions SET Data = '$data', DateTouched = $CurrentTime WHERE SessionID = '$sess_id';");
return true;
}
...
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
session_start();
$_SESSION['foo'] = "bar";
$_SESSION['baz'] = "wombat";
$s_w_c = session_write_close();
var_export($s_w_c); // false on gcloud
它在我的本地系统(MAMP)上运行良好,但在谷歌上没有调用 write 函数。其他功能正常。任何想法?
谢谢。