PHP + Workerman WebServer 小案例

2017年08月04日 3.06k 次阅读 0 条评论 0 人点赞

WorkerMan自带了一个简单的Web服务器,同样也是基于Worker实现的。文件位置在Workerman/WebServer.php。这个WebServer开发的目的主要是为了方便运行一些简单的Web程序

站点目录如下: 

 database.php 数据库文件;

web目录 为站点程序目录; 

server_start.php WebServer启动文件;


database.php文件代码:

<?php
require_once '../vendor/workerman/mysql/src/Connection.php';
global $db;
$db = new \Workerman\MySQL\Connection('127.0.0.1', '3306', 'example', 'example123', 'example');
$_SESSION['shili']= '这是一个workerman webserver 示例';

server_start.php文件代码:

<?php
/**
 * Workerman Server服务端示例
 */
use \Workerman\Worker;
use \Workerman\WebServer;

require_once __DIR__ . '/workerman-for-win/Autoloader.php';

// 这里监听8080端口,如果要监听80端口,需要root权限,并且端口没有被其它程序占用
$webserver = new WebServer('http://0.0.0.0:80');
// 类似nginx配置中的root选项,添加域名与网站根目录的关联,可设置多个域名多个目录
$webserver->addRoot('www.example.com', __DIR__ . '/web/');
// 设置开启多少进程
$webserver->count = 4;
Worker::runAll();

index.php文件代码:

<?php
require_once '../common/database.php';
global $db;
$user_list = $db->select('*')->from('user')->orderByDESC(array('id'))->query();
?>
<title><?php if(!empty($_SESSION['shili'])) echo $_SESSION['shili'] ?></title>
<form method="post" action="/add.php">
    <table border="0" style="border: 1px solid #8c8c8c;">
        <tr>
            <td>用户名:</td>
            <td><input name="username" type="text" value=" <?php if(!empty($_GET['username'])) echo $_GET['username'] ?>"/></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input name="password" type="password"/></td>
        </tr>
        <tr>
            <input type="hidden" name="id" value="<?php if(!empty($_GET['id'])) echo $_GET['id'] ?>"/>
            <td colspan="2" align="center"><input value="提交" type="submit"></td>
        </tr>
    </table>
</form>
<table border="0" style="border: 1px solid #8c8c8c; margin-top: 100px" width="80%">
    <tr>
        <td>ID</td>
        <td>Username</td>
        <td>Reg_date</td>
        <td>reg_ip</td>
        <td>操作</td>
    </tr>

    <?php
    if (!empty($user_list)) {
        foreach ($user_list as $list) {
            ?>
            <tr>
                <Td><?php
                 echo  $list['id'];
                    ?></Td>
                <td><?php
                    echo  $list['username'];
                    ?></td>
                <td><?php
                    echo  $list['reg_time'];
                    ?></td>
                <td><?php
                    echo  $list['reg_ip'];
                    ?></td>
                <td><a href="/index.php?id=<?php echo $list['id']?>&username=<?php echo $list['username']?>">编辑</a> <a href="/del.php?id=<?php echo $list['id'] ?>">删除</a> </td>
            </tr>
        <?php }
    } ?>
</table>

add.php文件代码:

<?php
require_once '../workerman-for-win/Protocols/Http.php';
require_once '../common/database.php';
global $db;

$username = $_POST['username'];
$password = $_POST['password'];

if(empty($_POST['id'])){
    if(empty($username) || empty($password)){
        \Workerman\Protocols\Http::end('用户名或密码不能为空');
        //echo json_encode('用户名或密码不能为空');
    }
    $data = array(
        'username'=>$username,
        'password'=>$password,
        'reg_time'=>date('Y-m-d H:i:s'),
        'reg_ip'=>'',
    );
    $insert_res = $db->insert('user')->cols($data)->query();
    unset($data);
    if($insert_res){
        //\Workerman\Protocols\Http::end('插入数据成功');
        \Workerman\Protocols\Http::header('Location:'.'/index.php');
    }else{
        \Workerman\Protocols\Http::end('插入数据失败');
    }
}else{
    if(empty($username)){
        \Workerman\Protocols\Http::end('用户名不能为空');
        //echo json_encode('用户名或密码不能为空');
    }
    $id = $_POST['id'];
    $username = $_POST['username'];
    $password = $_POST['password'];
    $data = array(
        'username'=>$username,
        'password'=>$password,
    );
    if(empty($password)) unset($data['password']);
    $update_res = $db->update('user')->cols($data)->where("id=:id")->bindValue('id',$id)->query();
    if($update_res){
        //\Workerman\Protocols\Http::end('插入数据成功');
        \Workerman\Protocols\Http::header('Location:'.'/index.php');
    }else{
        \Workerman\Protocols\Http::end('更新数据失败');
    }
}

del.php文件代码:

<?php
require_once '../workerman-for-win/Protocols/Http.php';
require_once '../common/database.php';
global $db;
$id = $_GET['id'];
$del_res = $db->delete('user')->where('id=:id')->bindValue('id',$id)->query();
if($del_res){
    //\Workerman\Protocols\Http::end('插入数据成功');
    \Workerman\Protocols\Http::header('Location:'.'/index.php');
}else{
    \Workerman\Protocols\Http::end('删除数据失败');
}

在终端进入程序目录下执行  php server_start.php start 启动 WebServer服务;

作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。

文章评论(0

接收回复邮件通知