我爱编程

php 基础知识点(2)

2018-03-29  本文已影响0人  青青玉立

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中看出

上一篇下一篇

猜你喜欢

热点阅读