Untuk statistik akses, anda harus mereka bentuk jadual yang berasingan. Menetapkannya sebagai medan adalah menyusahkan untuk dikekalkan. Jom dapatkan jam tangan berasingan
Jika anda ingin menyesuaikan medan dengan sewajarnya, bantuan adalah ID artikel
Pengarang terlebih dahulu perlu memahami bahawa teks dan teks panjang adalah jenis medan panjang berubah-ubah Ini ialah penerangan dalam phpMyAdmin: teks: Medan teks yang boleh menyimpan sehingga 65535 (2^16-1) bait dan disimpan. dalam Gunakan 2 bait sebelum kandungan untuk menunjukkan bilangan bait kandungan teks panjang: Maksimum 4294967295 bait, atau medan teks 4GB (2^32-1) boleh disimpan semasa menyimpan, gunakan 4 bait sebelum kandungan untuk menunjukkan bilangan bait kandungan Dalam erti kata lain, jika anda hanya menyimpan 1 aksara dalam medan teks panjang, ruang yang diduduki hanya 4 bait ditambah dengan bilangan bait yang diduduki oleh 1 aksara, bukannya menduduki 4 GB storan. ruang, 4 GB merujuk kepada nilai maksimum yang boleh disimpan oleh medan.
Akhirnya, terdapat berbilang kuantiti yang jelas berkaitan dan perlu disoal dan dikira. Tidak disyorkan untuk memasukkan kesemuanya ke dalam satu medan Perkara seperti data sesi yang tidak pasti (seperti rentetan JSON) boleh disimpan dalam medan teks panjang. Contohnya, I Jadual perbualan:
DROP TABLE IF EXISTS `io_session`;
CREATE TABLE IF NOT EXISTS `io_session` (
`user_id` bigint unsigned NOT NULL COMMENT '用户编号',
`data` longtext NOT NULL COMMENT '会话内容',
`create_time` bigint unsigned NOT NULL COMMENT '创建时间',
`update_time` bigint unsigned NOT NULL COMMENT '更新时间',
`version` smallint unsigned NOT NULL DEFAULT '0' COMMENT '版本号',
`flag` tinyint NOT NULL DEFAULT '1' COMMENT '版本号递增递减方向标识',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='会话表';
// 填出会话数据到数组 $io['user']['session']
function io_session_get() {
global $io;
if(!isset($io['user']['id'])) return false;
$db = io_db();
$table = IO_DB_PREFIX.'session';
$sql = "SELECT * FROM `{$table}` WHERE `user_id` = ?";
$stmt = $db->prepare($sql); $stmt->execute(array($io['user']['id']));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
if(!isset($rows[0])) return false;
$data = json_decode($rows[0]['data'], true);
// JSON解码失败时,把会话内容重置为空
$io['user']['session']['data'] = ($data) ? $data : array();
$io['user']['session']['version'] = $rows[0]['version'];
$io['user']['session']['flag'] = $rows[0]['flag'];
//register_shutdown_function('io_session_set');
}
// 将会话数据写入到数据库
function io_session_set() {
global $io;
if(!isset($io['user']['session'])) return false;
$data = json_encode($io['user']['session']['data']);
$db = io_db();
$table = IO_DB_PREFIX.'session';
switch(true) {
// version 类型 smallint 范围 0 到 65535
case ($io['user']['session']['flag'] == 1 && $io['user']['session']['version'] != 65535): {
$sql = "UPDATE `{$table}` SET `data` = ?, `version` = ?
WHERE `user_id` = ? AND `version` = ? AND `flag` = 1";
$version_increase = true;
break;
}
case ($io['user']['session']['flag'] == 1 && $io['user']['session']['version'] == 65535): {
$sql = "UPDATE `{$table}` SET `data` = ?, `version` = ?, `flag` = -1
WHERE `user_id` = ? AND `version` = ? AND `flag` = 1";
$version_increase = false;
break;
}
case ($io['user']['session']['flag'] == -1 && $io['user']['session']['version'] != 0): {
$sql = "UPDATE `{$table}` SET `data` = ?, `version` = ?
WHERE `user_id` = ? AND `version` = ? AND `flag` = -1";
$version_increase = false;
break;
}
case ($io['user']['session']['flag'] == -1 && $io['user']['session']['version'] == 0): {
$sql = "UPDATE `{$table}` SET `data` = ?, `version` = ?, `flag` = 1
WHERE `user_id` = ? AND `version` = ? AND `flag` = -1";
$version_increase = true;
break;
}
}
$stmt = $db->prepare($sql);
$stmt->execute(array(
$data,
$version_increase ? $io['user']['session']['version'] + 1 : $io['user']['session']['version'] - 1,
$io['user']['id'],
$io['user']['session']['version'],
));
return ($stmt->rowCount() == 0) ? false : true;
}
io_session_get();
var_export($io['user']['session']);
$io['user']['session']['data']['date'] = date('Y-m-d H:i:s');
io_session_set();
Untuk statistik akses, anda harus mereka bentuk jadual yang berasingan. Menetapkannya sebagai medan adalah menyusahkan untuk dikekalkan. Jom dapatkan jam tangan berasingan
Jika anda ingin menyesuaikan medan dengan sewajarnya, bantuan adalah ID artikel
mediumtext
比text
只多1 Byte
,如果你觉得这就算太大,用不完,占用空间
, maka saya tidak dapat mencari jalan yang lebih baikPengarang terlebih dahulu perlu memahami bahawa teks dan teks panjang adalah jenis medan panjang berubah-ubah
Ini ialah penerangan dalam phpMyAdmin:
teks: Medan teks yang boleh menyimpan sehingga 65535 (2^16-1) bait dan disimpan. dalam Gunakan 2 bait sebelum kandungan untuk menunjukkan bilangan bait kandungan
teks panjang: Maksimum 4294967295 bait, atau medan teks 4GB (2^32-1) boleh disimpan semasa menyimpan, gunakan 4 bait sebelum kandungan untuk menunjukkan bilangan bait kandungan
Dalam erti kata lain, jika anda hanya menyimpan 1 aksara dalam medan teks panjang, ruang yang diduduki hanya 4 bait ditambah dengan bilangan bait yang diduduki oleh 1 aksara, bukannya menduduki 4 GB storan. ruang, 4 GB merujuk kepada nilai maksimum yang boleh disimpan oleh medan.
Akhirnya, terdapat berbilang kuantiti yang jelas berkaitan dan perlu disoal dan dikira. Tidak disyorkan untuk memasukkan kesemuanya ke dalam satu medan Perkara seperti data sesi yang tidak pasti (seperti rentetan JSON) boleh disimpan dalam medan teks panjang. Contohnya, I Jadual perbualan: