PHP数据库静态化

 

本来的想法是不老改变的东西,直接生成静态json文件,但是老师说为了扩展要写数据库,那就写一个静态化处理,在每次客户端提交时候,重新生成静态json。

数据库建表:

创建一个大的服务项目

#创建服务类型(大)
create table big_project(
big_id int unsigned not null auto_increment primary key,
project varchar(40) not null unique
);

创建一个小的服务项目

#创建服务类型(小)
create table small_project(
small_id int unsigned not null auto_increment primary key,
big_id int unsigned not null,
project varchar(40) not null unique,
FOREIGN KEY (big_id) REFERENCES big_project(big_id) on delete cascade
);
<?php
/**
 * 用于静态项目
 */
//ini_set("display_errors", "On");
//error_reporting(E_ALL | E_STRICT);
require dirname(__FILE__).'/../mysql/mysql_static.php';

$mysql= new MySql_static();
$big=$mysql->big_project();//列出大项目都有什么
$arr=array();   //用于json格式化使用
foreach ($big as $big_v) {
    $small=$mysql->small_project($big_v['big_id']);//列出大项目中的小项都有什么
    if(empty($small)){
        $arr[$big_v['project']]='';//用于保证在json中小项不存时,大项依旧可见
    }
    foreach ($small as $small_v) {
        $arr[$big_v['project']][]=$small_v['project'];
    }   
}
//echo json_encode($arr,JSON_UNESCAPED_UNICODE); //查看格式化结果
$myfile = fopen("file/project_static.json", "w") or die("Unable to open file!");
fwrite($myfile, json_encode($arr,JSON_UNESCAPED_UNICODE));//写入文件

上面的PHP代码,在文件生成卡了好久,网上有很多解决方法,比如手动生成后修改权限在操作,更有意思的是有人要先改权限再创建,连文件都没有还改权限。

我觉得网上的很多方法都不是本质性解决问题的关键,也折腾很久发现了问题所在

[root@ html]# ll
drwxr-xr-x  2 apache  apache    4096 Dec  3 16:02 a
drwxr-xr-x  6 root    root      4096 Dec  3 08:58 consumer
drwxr-xr-x  7 starsky root      4096 Dec  3 11:01 merchant

将文件生成在其他目录时发现了玄机,我的web目录下有三个文件,有着不同的所有者,看到这我就明白了,PHP文件生成是由服务器完成,所有着就是apache,服务文件夹是由ftp上传,所以所有者是ftp账户,这也就是我为什么在服务文件夹下无法生成文件的主要原因,解决方法是在服务文件夹新建一个所有者为apache的文件夹。

[root@ static]# mkdir file
[root@ static]# ll
total 8
drwxrwxr-x 2 root    root 4096 Dec  3 16:08 file
-rw-r--r-- 1 starsky root  924 Dec  3 16:07 project_static_up.php
[root@ static]# chown apache file 
[root@ static]# ls file/                                                                                      
a.txt

文件生成成功。

想放个鸡汤清醒下我,嗯,就这样吧~~~

转载于:https://my.oschina.net/u/2951890/blog/1584123

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值