读取文件
$result = Swoole\Async::readfile(__DIR__."/1.txt", function($filename, $fileContent) {
echo "filename:".$filename.PHP_EOL; // \n \r\n
echo "content:".$fileContent.PHP_EOL;
});
//__DIR__为魔术变量,表示当前目录
var_dump($result);
echo "start".PHP_EOL;
function 为回调函数,在读取完成后调用,一般为最后
此方法读取的文件大小不超过4M
超过,一般使用swoole_async_read(); 使用方法参照文档
特点,分段读取,异步非阻塞
写文件
$content = date("Ymd H:i:s").PHP_EOL;
swoole_async_writefile(__DIR__."/1.log", $content, function($filename){
// todo
echo "success".PHP_EOL;
}, FILE_APPEND);
// file_put_contents();
echo "start".PHP_EOL;
一般文件名相同会覆盖,需要设置相应的参数
写入信息也有限制,4M
动态查看日志
tail –f access.log
安装MySQL数据库
https://blog.csdn.net/qq_38663729/article/details/79327305
导入数据库采用此方法:
mysql -u 用户名 -p 数据库名 < 数据库名.sql
mysql -u abc -p abc < abc.sql
source 即可
删除数据库:
drop database [xxx]
class AysMysql {
public $dbSource = "";
public $dbConfig = [];
public function __construct() {
$this->dbSource = new swoole_mysql;
$this->dbConfig = array(
'host' => 'localhost',
'user' => 'root',
'password' => '12345678',
'database' => 'swoole',
'chatset' => 'utf8', //指定字符集
);
}
public function update() {
}
public function add() {
}
/**
*mysql 执行逻辑
*@param $id
*@param $username
*@return bool
*/
public function execute($id, $username) {
//connect
$this->dbSource->connect($this->dbConfig, function($db, $result) use($id, $username){
if($result === false){
var_dump($db->connect_errno, $db->connect_error);
die;
// todo
}
// $sql = "select * from test where id=1";
$sql = "update test set username = '".$username."' where id=".$id;
//query
$db->query($sql, function($db, $result) use($sql){
//select => result 返回的是 查询结果内容
if($result === false){
//todo
var_dump($db->error);
echo $sql;
}elseif($result === true){//add update delete 返回bool
var_dump($db->affected_rows);
}else{
print_r($result);
}
$db->close();
});
});
return true;
}
}
//异步执行SQL语句
$obj = new AysMysql();
$flag = $obj->execute(1, 'chuangxiang');
var_dump($flag).PHP_EOL;
echo "start".PHP_EOL;
函数闭包内使用上一范围的变量
function() use($ws, $frame)