php 基础知识点(2)

PHP写一段代码,确保多个进程同时写入一个文件成功

1. 加锁

    $fp = fopen("lock.txt","w+");

    if (flock($fp,LOCK_EX)) {

            //获得写锁,写数据        

            fwrite($fp, "write something");

            // 解除锁定        

            flock($fp, LOCK_UN);

    } else {

        echo "file is locking...";

    }

    fclose($fp);

2. functionwrite_file($filename,$content){

        $lock=$filename. '.lck';

        $write_length= 0;

        while(true) {

            if(file_exists($lock) ) {

                    usleep(100);

            } else {

            touch($lock);

            $write_length=file_put_contents($filename,$content, FILE_APPEND);

            break;

        }

    }

    if(file_exists($lock) ) {

        unlink($lock);

    }

    return$write_length;

}

PHP操作目录(文件夹)的常用函数

opendir -- 打开目录句柄,打开一个目录句柄,可用于之后的 closedir(),readdir() 和 rewinddir() 调用中

is_dir() --判断给定文件名是否是一个目录

readdir -- 从目录句柄中读取条目,返回目录中下一个文件的文件名。文件名以在文件系统中的排序返回

scandir -- 列出指定路径中的文件和目录

is_readable   文件是否可读

is_writable    文件是否可写

closedir 关闭目录句柄

mkdir()         --新建目录 

PHP操作文件的常用函数

basename ( $path)   返回路径中的文件名部分

dirname — 返回路径中的目录部分

pathinfo — 返回文件路径的信息

fopen — 打开文件或者 URL

fstat — 通过已打开的文件指针取得文件信息

filesize — 取得文件大小

filetype()   文件类型

fseek();--在文件指针中定位

flock()      - -轻便的咨询文件锁定

disk_free_space — 获得目录所在磁盘分区的可用空间(字节单位)

disk_total_space()   返回一个目录的磁盘总大小

fileatime — 取得文件的上次访问时间

filectime()       最后改变时间(任何数据的修改)

filemtime — 取得文件修改时间

file — 把整个文件读入一个数组中

fgets — 从文件指针中读取一行

fgetss -- 从文件指针中读取一行并过滤掉 HTML 标记

file_put_contents — 将一个字符串写入文件

file_exists — 检查文件或目录是否存在

feof — 测试文件指针是否到了文件结束的位置

fclose — 关闭一个已打开的文件指针

PHP处理数据库的常用函数

mysql_connect: 打开 MySQL 服务器连接

mysql_close: 关闭 MySQL 服务器连接

mysql_create_db: 建立一个 MySQL 新数据库

mysql_drop_db: 移除数据库

mysql_fetch_array: 返回数组资料。

mysql_fetch_assoc()-获取和显示数据

mysql_fetch_field: 取得字段信息

mysql_fetch_row: 返回单列的各字段

mysql_fetch_lengths: 返回单列各栏资料最大长度

mysql_query: 送出一个 query 字符串。

mysql_result: 取得查询 (query) 的结果。

mysql_select_db: 选择一个数据库

mysql_num_rows  得到 SELECT 返回的数目

mysql_insert_id 返回最后一次使用 INSERT 指令的 ID

mysql_errno: 返回错误信息代码。

mysql_error: 返回错误信息

mysql_free_result(res)   释放结果内存

使用范例

    $dbh = mysql_connect('localhost:3306','mcclain','standard');

    mysql_select_db('admreqs');

    $query ="insert into requests(date, request, email, priority,status)values     (NOW(),'$description','$email','$priority','NEW')";

 $res = mysql_query($query, $dbh); 

    $query ="select max(id) from requests";

 $res = mysql_query($query, $dbh); 

 $err = mysql_error(); 

 if($err){  echo"发生错误,请通知站长"; } 

 $row = mysql_fetch_row($res); 

    echo"未来您使用的号码为:".$row[0];


    $result = mysql_db_query("database","select * from table");

    while($row = mysql_fetch_array($result)) {

        echo $row["user_id"];

        echo $row["fullname"];

 }

 mysql_free_result($result);//释放结果内存

或者

    $result = mysql_db_query("MyDatabase","select * from test");

 while($row = mysql_fetch_object($result)) {

     echo $row->user_id;

     echo $row->fullname;

 }

 mysql_free_result($result);


 Print、echo、print_r有什么区别?

① echo和print都可以做输出,不同的是,echo不是函数,没有返回值,而print是一个函数有返回值,所以相对而言如果只是输出echo会更快,而print_r通常用于打印变量的相关信息,通常在调试中使用。

② print   是打印字符串

③ print_r 则是打印复合类型  如数组 对象


 在程序的开发中,如何提高程序的运行效率?

①优化SQL语句,查询语句中尽量不使用select *,查寻字段;少用子查询可用表连接代替;少用模糊查询;

②数据表中创建索引;

③对程序中经常用到的数据生成缓存

AJAX的优势是什么?

ajax是异步传输技术,可以通过javascript实现,也可以通过JQuery框架实现,实现局部刷新,减轻了服务器的压力,也提高了用户体验

1)javascript实现

try{

        ajax = new ActiveXObject("microsoft.xmlhttp");

    }catch(e1){

        ajax = new XMLHttpRequest();

    }

    var method = "GET";

    var url = "https://wh.yueloo.com.cn/v1.0/get_book_base_info?book_id=" + 1005;

    ajax.open(method,url);

    ajax.send(null);   

    /*

//post方式

var content = "username=" + username;

ajax.send(content); 

    */     

    ajax.onreadystatechange = function(){

        if(ajax.readyState == 4){

            if(ajax.status == 200){

                var nowStr = ajax.responseText;

              // console.log(nowStr);               

                document.write(nowStr);

            }

        }

    }

2)JQuery ajax

$.ajax({

    type: 'POST',

    url:"index.php",

    data: data,

    async:true,

    dataType:"json",

    error:function(xhr){

        alert("错误提示: " + xhr.status + " " + xhr.statusText);

    },

    success:function(result){

    $("div").html(result);

    }

});

安全对一套程序来说至关重要,请说说在开发中应该注意哪些安全机制?

①防远程提交;②防SQL注入,对特殊代码进行过滤;

③防止注册机灌水,使用验证码;

WEB开发中数据提交方式有几种?有什么区别?百度使用哪种方式?

Get与post两种方式

区别:1. Get从服务器获取数据,post向服务器传送数据

2. Get传值在url中可见,post在url中不可见

4. Get传值一般在2KB以内,post传值大小可以在php.ini中进行设置

5. get安全性非低,post安全性较高,执行效率却比Post高

建议:

1、get式安全性较Post式要差些包含机密信息建议用Post数据提交式;

2、做数据查询建议用Get式;做数据添加、修改或删除建议用Post方式;

百度使用的get方式,因为可以从它的URL中看出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容

  • 个人博客:https://yeaseonzhang.github.io 花了半个多月的时间,终于又把“JS红宝书”...
    Yeaseon阅读 1,749评论 2 23
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,028评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,649评论 18 139
  • Ajax和XMLHttpRequest 我们通常将Ajax等同于XMLHttpRequest,但细究起来它们两个是...
    changxiaonan阅读 2,231评论 0 2
  • AJAX 原生js操作ajax 1.创建XMLHttpRequest对象 var xhr = new XMLHtt...
    碧玉含香阅读 3,195评论 0 7