为什么要在PHP中读取数据库生成缓存文件呢?

  1. 提高性能:缓存可以减少对数据库的访问次数,从而提高了应用程序的性能。当数据在缓存中可用时,PHP可以直接从缓存中读取数据,而不需要查询数据库。这可以大大减少数据库的负载,并提高应用程序的响应速度。
  2. 减轻数据库压力:通过将经常访问的数据存储在缓存中,可以减少对数据库的查询压力。对于高流量的应用程序,频繁地查询数据库可能会导致数据库性能下降。通过使用缓存,可以减少数据库的负载,使其能够更好地处理其他请求。
  3. 提高数据访问速度:缓存通常比数据库更快,因为它是在内存中存储数据,而数据库需要从磁盘中读取数据。通过使用缓存,可以更快地访问数据,特别是在对速度要求较高的应用场景中。
  4. 改善用户体验:由于缓存可以减少数据访问时间,因此可以更快地响应用户请求。这可以改善用户体验,提高用户满意度。
  5. 支持并发访问:在多用户并发访问的情况下,缓存可以平衡多个请求之间的数据访问。当多个请求同时访问相同的数据时,缓存可以确保只从数据库中读取一次数据,并将结果返回给所有请求。这可以避免重复查询数据库,提高了系统的并发性能。

fopen封装函数

使用fopen函数生成文件,并封装为函数。

/*
 * $filename, 文件名称
 * $contents,内容
 * */
function write_file($filename, $contents)
{
    if ($fp = fopen($filename, "w")) {
        $contents = trim($contents) == '' ? ' ' : $contents;
        fwrite($fp, $contents);
        fclose($fp);
        return true;
    } else {
        return false;
    }
}

读取mysql数据表并拼接

/*
 * 生成或更新配置文件
 * */
function updateConfigCategory()
{
    global $db;
    $php_pre = "<?php if (!defined('LOCK_PATH')) {exit('Access Denied');}" . PHP_EOL;
    $config_con = $php_pre;

    //1.抵押方式
    $rs_mortgage = $db->fetchall('mortgage', 'mort_name', '', ' mort_sort DESC,mort_id ASC');
    $arr_mortgage = array();
    foreach ($rs_mortgage as $v) {
        $arr_mortgage[] = $v['mort_name'];
    }
    $config_con .= "\$lock_mortgage=" . @array_to_string($arr_mortgage) . ";" . PHP_EOL;

    //2.贷款金额
    $rs_amount = $db->fetchall('loan_amount', 'amount_name', '', ' amount_sort DESC,amount_id ASC');
    $arr_amount = array();
    foreach ($rs_amount as $v) {
        $arr_amount[] = $v['amount_name'];
    }
    $config_con .= "\$lock_amount=" . @array_to_string($arr_amount) . ";" . PHP_EOL;

    //3.客户粘度
    $rs_viscosity = $db->fetchall('viscosity', 'viscosity_name', '', ' viscosity_sort DESC,viscosity_id ASC');
    $arr_viscosity = array();
    foreach ($rs_viscosity as $v) {
        $arr_viscosity[] = $v['viscosity_name'];
    }
    $config_con .= "\$lock_viscosity=" . @array_to_string($arr_viscosity) . ";" . PHP_EOL;

    //4.从事行业
    $rs_industry = $db->fetchall('industry', 'industry_name', '', ' industry_sort DESC,industry_id ASC');
    $arr_industry = array();
    foreach ($rs_industry as $v) {
        $arr_industry[] = $v['industry_name'];
    }
    $config_con .= "\$lock_industry=" . @array_to_string($arr_industry) . ";" . PHP_EOL;

    //5.贷款产品
    $rs_product = $db->fetchall('product', 'product_name', '', ' product_sort DESC,product_id ASC');
    $rs_p = array();
    foreach ($rs_product as $v) {
        $rs_p[] = $v['product_name'];
    }
    $config_con .= "\$lock_product=" . @array_to_string($rs_p) . ";" . PHP_EOL;

    //6.贷款类型
    $rs_type = $db->fetchall('loan_type', 'type_name', '', ' type_sort DESC,type_id ASC');
    $arr_type = array();
    foreach ($rs_type as $v) {
        $arr_type[] = $v['type_name'];
    }
    $config_con .= "\$lock_type=" . @array_to_string($arr_type) . ";" . PHP_EOL;

    //7.贷款分类
    $rs_category = $db->fetchall('loan_category', 'category_name', '', ' category_sort DESC,category_id ASC');
    $arr_category = array();
    foreach ($rs_category as $v) {
        $arr_category[] = $v['category_name'];
    }
    $config_con .= "\$lock_category=" . @array_to_string($arr_category) . ";" . PHP_EOL;

    //8.联络情况
    $rs_liaison = $db->fetchall('liaison', 'liaison_name', '', ' liaison_sort DESC,liaison_id ASC');
    $arr_liaison = array();
    foreach ($rs_liaison as $v) {
        $arr_liaison[] = $v['liaison_name'];
    }
    $config_con .= "\$lock_liaison=" . @array_to_string($arr_liaison) . ";" . PHP_EOL;

    //生成文件;
    write_file("conf/config.category.php", $config_con);
}

生成的缓存文件格式

<?php if (!defined('LOCK_PATH')) {exit('Access Denied');}
$lock_mortgage=array('信用贷款','抵押贷款','质押贷款','担保贷款');
$lock_amount=array('200万(含)以下贷款','200万(不含)-1000万(含)贷款','1000万(不含)以上贷款');
$lock_viscosity=array('收款码:活跃商户','收款码:优质活跃商户','收款码商户','存款','个人贷款','银行卡','手机银行','享惠木兰','企业基本户','企业代发工资','企业一般户','企业贷款','定期存款','活期存款');
$lock_industry=array('养殖','种植','餐饮','零售','地产','服装');
$lock_product=array('农贷宝','商贷宝','消贷保','市民快贷','新农速贷','商户快贷','惠农快贷');
$lock_type=array('绿色贷款','涉农贷款','社团贷款');
$lock_category=array('正常贷款','表内贷款','表外贷款','已诉贷款','未诉贷款');
$lock_liaison=array('正常联络','联络异常');

补充知识

fopen() 函数

在 PHP 中,fopen() 函数用于打开一个文件或 URL,并返回一个文件资源句柄,以便对文件进行读取、写入等操作。

以下是 fopen() 函数的语法:

fopen(string $filename, string $mode): mixed

参数说明:

  • $filename:要打开的文件路径和文件名。可以是一个本地文件路径,也可以是一个 URL。
  • $mode:打开文件的模式。模式有多种,以下是一些常用的模式:
    • "r":以只读方式打开文件。文件必须存在,否则打开会失败。
    • "w":以写入模式打开文件。如果文件不存在,则会创建一个新文件;如果文件已存在,则会截断文件并重新写入。
    • "a":以追加模式打开文件。如果文件不存在,则会创建一个新文件;如果文件已存在,则在文件末尾追加数据。
    • "x":以独占模式打开文件进行写入。如果文件不存在,则会创建一个新文件;如果文件已存在,则打开会失败。
    • "c":以读写模式打开文件。如果文件不存在,则会创建一个新文件;如果文件已存在,则会在文件的开头写入数据。
    • "b":以二进制模式打开文件。通常用于非文本文件的读写,例如图像文件。

返回值:

  • 如果成功打开文件,则返回一个文件资源句柄(resource),可以用于后续的文件操作。
  • 如果打开文件失败,则返回 false

示例用法:

// 打开一个文本文件进行读取
$file = fopen("example.txt", "r");
if ($file) {
    // 读取文件内容
    $content = fread($file, filesize("example.txt"));
    echo $content;
    fclose($file); // 关闭文件句柄
} else {
    echo "无法打开文件";
}

在上面的示例中,我们使用 fopen() 函数打开了一个名为 “example.txt” 的文本文件,并以只读模式打开。然后使用 fread() 函数读取了整个文件的内容,并输出到屏幕上。最后,我们使用 fclose() 函数关闭了文件句柄。


@漏刻有时

12-12 15:23