Php 创建记录列表并稍后插入

Php 创建记录列表并稍后插入,php,mysql,moodle,Php,Mysql,Moodle,我需要控制谁以及何时进入每个子页面,并将这些信息插入MySQL。我有一个MYSQL表,它将获取信息(userid、subpage、subpage id、datetime) 我在/news/view.php、/prod/view.php、/material/index.php上调用这个函数 它的工作很好,但我需要优化它一点。有什么方法可以在DB空闲时插入这些记录,或者创建列表并每小时插入它们 //编辑 我尝试了INSERT delay,但它不适用于我的数据库:(在Moodle/PHP中没有标准的方

我需要控制谁以及何时进入每个子页面,并将这些信息插入MySQL。我有一个MYSQL表,它将获取信息(userid、subpage、subpage id、datetime)

我在/news/view.php、/prod/view.php、/material/index.php上调用这个函数

它的工作很好,但我需要优化它一点。有什么方法可以在DB空闲时插入这些记录,或者创建列表并每小时插入它们

//编辑


我尝试了INSERT delay,但它不适用于我的数据库:(

在Moodle/PHP中没有标准的方法来延迟查询,直到数据库空闲为止。“INSERT delay”在最新的MySQL中被删除,您可以在这里看到: 我可以提出两个选择:

  • 使用检查数据库性能-也许更多的内存/缓存有助于提高性能

  • 将另一台服务器用于此日志-以便将负载分配到更多服务器上

  • function logstore(){
    global $DB, $USER, $CFG;
    
    
    $protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https')
    === FALSE ? 'http' : 'https';
    $host     = $_SERVER['HTTP_HOST'];
    $script   = $_SERVER['SCRIPT_NAME'];
    
    $currentUrl = $protocol . '://' . $host . $script;
    
    $newsurl = $CFG->wwwroot.'/news/view.php';
    $produrl = $CFG->wwwroot.'/prod/view.php';
    $materialurl = $CFG->wwwroot.'/material/index.php';
    
    
    $datetime = date_create()->format('Y-m-d H:i:s');
    
    
    $records = new stdClass();
    $records->userid = $USER->id;
    if($currentUrl == $newsurl){
        $records->activity = 'news';
        $records->activityid = $_GET['id'];
    }elseif ($currentUrl == $produrl){
        $records->activity = 'prod';
        $records->activityid = $_GET['id'];
    }
    elseif ($currentUrl == $materialurl){
        $records->activity = 'material';
        $records->activityid = $_GET['id'];
    }
    
    $records->datetime = $datetime;
    
    $DB->insert_record('logstore', $records);}