$pdo=new PDO("mysql:127.0.0.1;dbname:user",$username,$pass);
$statment=$pdo->prepare($sql);
$statment->execute([]);
$statment->fetchAll();
$statment->rowCount();
$link = Mysql_connect(“localhost”,”root”,”123”) or die(“数据库连接失败!”);
Mysql_select_db(“db_test”,$link) or die(“选择数据库失败!”);
$sql = “select id,name,age,gender,phone,email from friend where age>20”;
$result = mysql_query($sql);
$count = mysql_num_rows($result);
While($row = mysql_fetch_assoc($result)){
Echo $row[‘id’];
….
}
$client=new swoole_client(SWOOLE_SOCK_TCP);
$client->on('connect',function(swoole_client $cli){});
$client->on('receive',function(swoole_client $cli,$data){});
$client->on('error',function(swoole_client $cli,$error){});
$client->on('close',function(swoole_client $cli){});
$client->connect('127.0.0.1',9501);
$fp=new stream_socket_client("tcp://....",$errno,$errstr,30);
fwrite($fp,'');
fread($fp,1024);
fclose($fp);
相对于C/S,B/S具有如下优势:
1、分布性:可以随时进行查询、浏览等业务
2、业务扩展方便:增加网页即可增加服务器功能
3、维护简单方便:改变网页,即可实现所有用户同步更新
4、开发简单,共享性强,成本低,数据可以持久存储在云端而不必担心数据的丢失。
一个动态网站服务器平台至少要包括:操作系统+Web服务器+应用程序服务+数据库
register_shutdown_function('handleFatal');
function handleFatal()
{
$error = error_get_last();
switch ($error['type'] ?? null) {
case E_ERROR :
case E_PARSE :
case E_CORE_ERROR :
case E_COMPILE_ERROR :
$message = $error['message'] . PHP_EOL;
if (isset($_SERVER['REQUEST_URI'])) {
$message .= '[QUERY] ' . $_SERVER['REQUEST_URI'];
}
// log or send:
// error_log($message);
// $server->send($fd, $message);
break;
}
}
多个进程,一定不能共用连接。必须每个进程单独创建Redis、MySQL、PDO连接,其他的存储客户端同样也是如此。原因是如果共用1个连接,那么返回的结果无法保证被哪个进程处理。持有连接的进程理论上都可以对这个连接进行读写,这样数据就发生错乱了。
所以在多个进程之间,一定不能共用连接
在swoole_server中,应当在onWorkerStart中创建连接对象
在swoole_process中,应当在swoole_process->start后,子进程的回调函数中创建连接对象
本页面所述信息对使用pcntl_fork的程序同样有效
$serv = new swoole_server("0.0.0.0", 9502);
//必须在onWorkerStart回调中创建redis/mysql连接
$serv->on('workerstart', function($serv, $id) {
$redis = new redis;
$redis->connect('127.0.0.1', 6379);
$serv->redis = $redis;
});
$serv->on('receive', function (swoole_server $serv, $fd, $from_id, $data) {
$value = $serv->redis->get("key");
$serv->send($fd, "Swoole: ".$value);
});
$serv->start();
require的执行速率比include快,因为不管页面有几个require,只会解释一次,include是页面有几个解释几次,include在包含的页面不存在或者有问题,会发出错误,但不影响执行,require则无法继续执行,require比require_once
快,因为它不判断文件是否已存在。
csrf(跨站点提交),xss(js脚本插入,htmlspecials),sql恶意注入(addslashes,预处理,** or 1=1)
在业界目前防御 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证。
<?php
$link = Mysql_connect(“localhost”,”root”,”123”) or die(“数据库连接失败!”);
Mysql_select_db(“db_test”,$link) or die(“选择数据库失败!”);
$sql = “select id,name,age,gender,phone,email from friend where age>20”;
$result = mysql_query($sql);
$count = mysql_num_rows($result);
While($row = mysql_fetch_assoc($result)){
Echo $row[‘id’];
….
}
Kibana简介和安装 https://www.jianshu.com/p/0ce405db9ceb /bin/kibana
ElasticSearch http://www.ruanyifeng.com/blog/2017/08/elasticsearch.html ./bin/elasticsearch
Logstash https://www.cnblogs.com/cjsblog/p/9459781.html