初识PHP

对我来说,本来大部分事情都能用Python去做的,但是就因为流行度的问题,经过几番考虑,又选择了另外再学习一门动态语言——PHP。

下载下来官方打包的PHP的绿色版后吓了一跳

初识PHP

原来官方打包的东西里就附带了这么多常用的现成的库了,本来以为还要像Python一样到处找第三方库呢,哈哈。

windows下好像没有php-fpm,生产环境部署的时候可能要折腾那么一下子了。启动方式如下:

D:\php>php-cgi.exe -b 127.0.0.1:9000

配合强大的nginx,php就可以开始工作了,附带nginx.conf配置如下:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        charset utf-8;

        location /static {
	    root E:\\projects\\order-manager-system\\src\\;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location ~ \.php {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  E:\\projects\\order-manager-system\\src\\$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

经过一段时间的学习,发现php在做web上不是盖的,用php本身的语法来做就很方便了,就是<?php有点打起来麻烦。

稍微研究了下后发现模版的继承可以这么实现,唯一令我担心的是这些变量如何避免require它的外部脚本带来的污染,不知道哪位大大知道怎么保护模版内的变量使其局部化呢?:

/******************main.php*********************/
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
  <meta charset="utf-8">
  <title><?php echo $title ?></title>

</head>
<body>
    <?php echo $content ?>
</body>
</html>

/****************index.php***********************/
<?php ob_start() ?>
<table>
    
    <tr>
    <?php foreach ($columns as $col): ?>
        <td><?php echo $col ?></td>
    <?php endforeach ?>
    </tr>
    
    <?php foreach ($rows as $row): ?>
        <tr>
        <?php foreach($row as $v): ?>
            <td><?php echo $v ?></td>            
        <?php endforeach ?>
        </tr>
    <?php endforeach ?>
    
</table>
<?php
    $title = "asdfasdfasf";
    $content = ob_get_clean();
    require('templates/main.php');
?>

然后就是数据库的长连接,本来以为有哪里对于php的fastcgi模式来说是请求间共享的,这样就可以保存数据库连接而不被销毁了,但貌似没发现,$_GLOBAL里面的好像在请求间也不是共享的。

后来才知道真是绕远路了,pg_pconnect就可以实现。

用php写了一些测试功能后发现它在语言本身并没有落后Pyhon太多,功能做起来都很方便,代码简单清晰,对于web开发大量的功能都内置了。主要是做通讯服务的时候应该不那么给力。

暂时没感觉到灵活性的瓶颈,貌似现在还不需要框架,URL路由部分则是“无耻”地交给了更擅长它的nginx去实现了。

 

你可能感兴趣的:(PHP,框架,长连接)