首页
友人帐
留言板
关于
Search
1
IDE Eval Resetter:JetBrains 全家桶无限试用插件
243 阅读
2
影视资源采集站收录大全
176 阅读
3
linux安装或升级protoc
153 阅读
4
批量采集美女写真等图片做图片站
115 阅读
5
VFM 3.7.5 源码 - 一个极简的 PHP 私人云盘!
95 阅读
谈天说地
程序源码
技术教程
成品源码
登录
Search
标签搜索
PHP
linux
源码
go
windows
centos
原创
mysql
微信
激活
采集
宝塔
绿色版
API
解析
SDK
图片
破解
域名
html
云青
累计撰写
150
篇文章
累计收到
77
条评论
首页
栏目
谈天说地
程序源码
技术教程
成品源码
页面
友人帐
留言板
关于
搜索到
44
篇与
的结果
2022-12-05
TP5使用workerman开启websocket服务
前言之前代码使用websocket方式是直接下载workman文件放入vendor中进行使用,这种方式处理及其容易出现问题,比如linux运行正常而windows无法使用,每次部署代码拉取依赖包都会覆盖等奇奇怪怪的问题安装依赖 通过Composer.exe安装相关依赖:composer require topthink/think-worker 如果报错,如下:composer require topthink/think-worker Using version ^2.0 for topthink/think-worker ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. Problem 1 topthink/think-worker v2.0.5 requires topthink/framework 5.1.* -> satisfiable by topthink/framework[5.1.x-dev, v5.1-beta.1, v5.1-rc.1, v5.1-rc.2, v5.1-rc.3, v5.1.0, v5.1.1, v5.1.10, v5.1.11, v5.1.12, v5.1.13, v5.1.14, v5.1.15, v5.1.16, v5.1.17, v5.1.18, v5.1.19, v5.1.2, v5.1.3, v5.1.4, v5.1.5, v5.1.6, v5.1.7, v5.1.8, v5.1.9] but these conflict with your requirements or minimum-stability. - topthink/think-worker v2.0.4 requires topthink/framework 5.1.* -> satisfiable by topthink/framework[5.1.x-dev, v5.1-beta.1, v5.1-rc.1, v5.1-rc.2, v5.1-rc.3, v5.1.0, v5.1.1, v5.1.10, v5.1.11, v5.1.12, v5.1.13, v5.1.14, v5.1.15, v5.1.16, v5.1.17, v5.1.18, v5.1.19, v5.1.2, v5.1.3, v5.1.4, v5.1.5, v5.1.6, v5.1.7, v5.1.8, v5.1.9] but these conflict with your requirements or minimum-stability. - topthink/think-worker v2.0.3 requires topthink/framework 5.1.* -> satisfiable by topthink/framework[5.1.x-dev, v5.1-beta.1, v5.1-rc.1, v5.1-rc.2, v5.1-rc.3, v5.1.0, v5.1.1, v5.1.10, v5.1.11, v5.1.12, v5.1.13, v5.1.14, v5.1.15, v5.1.16, v5.1.17, v5.1.18, v5.1.19, v5.1.2, v5.1.3, v5.1.4, v5.1.5, v5.1.6, v5.1.7, v5.1.8, v5.1.9] but these conflict with your requirements or minimum-stability. - topthink/think-worker v2.0.2 requires topthink/framework 5.1.* -> satisfiable by topthink/framework[5.1.x-dev, v5.1-beta.1, v5.1-rc.1, v5.1-rc.2, v5.1-rc.3, v5.1.0, v5.1.1, v5.1.10, v5.1.11, v5.1.12, v5.1.13, v5.1.14, v5.1.15, v5.1.16, v5.1.17, v5.1.18, v5.1.19, v5.1.2, v5.1.3, v5.1.4, v5.1.5, v5.1.6, v5.1.7, v5.1.8, v5.1.9] but these conflict with your requirements or minimum-stability. - topthink/think-worker v2.0.1 requires topthink/framework 5.1.* -> satisfiable by topthink/framework[5.1.x-dev, v5.1-beta.1, v5.1-rc.1, v5.1-rc.2, v5.1-rc.3, v5.1.0, v5.1.1, v5.1.10, v5.1.11, v5.1.12, v5.1.13, v5.1.14, v5.1.15, v5.1.16, v5.1.17, v5.1.18, v5.1.19, v5.1.2, v5.1.3, v5.1.4, v5.1.5, v5.1.6, v5.1.7, v5.1.8, v5.1.9] but these conflict with your requirements or minimum-stability. - topthink/think-worker v2.0.0 requires topthink/framework 5.1.* -> satisfiable by topthink/framework[5.1.x-dev, v5.1-beta.1, v5.1-rc.1, v5.1-rc.2, v5.1-rc.3, v5.1.0, v5.1.1, v5.1.10, v5.1.11, v5.1.12, v5.1.13, v5.1.14, v5.1.15, v5.1.16, v5.1.17, v5.1.18, v5.1.19, v5.1.2, v5.1.3, v5.1.4, v5.1.5, v5.1.6, v5.1.7, v5.1.8, v5.1.9] but these conflict with your requirements or minimum-stability. - Installation requestfortopthink/think-worker ^2.0 -> satisfiable by topthink/think-worker[v2.0.0, v2.0.1, v2.0.2, v2.0.3, v2.0.4, v2.0.5].Installation failed, reverting ./composer.json to its original content. Installation failed, reverting ./composer.json to its original content. 则是版本不匹配,用低版本的workerman,更改如下:composer require topthink/think-worker=1.0.* 如果是windows系统,还需安装依赖:composer require workerman/workerman-for-win 启动服务文件在项目根目录里面新增server.php文件<?php define('APP_PATH', __DIR__ . '/../application/'); define("BIND_MODULE", "server/Screen"); // 加载框架引导文件 require __DIR__ . '/../thinkphp/start.php';增加控制器<?php namespace app\server\controller; use think\worker\Server; class Screen extends Server { protected $socket = 'websocket://127.0.0.1:2346'; private $all = []; /** * 收到信息 * @param $connection * @param $data */ public function onMessage($connection, $data) { // 广播 foreach ($this->all as $v) { $v->send(json_encode("广播")); } // $connection->send("收到消息啦,您的id:" . $connection->id); } /** * 当连接建立时触发的回调函数 * @param $connection */ public function onConnect($connection) { // 保存所有已连接的客户端id $this->all[$connection->id] = $connection; } /** * 当连接断开时触发的回调函数 * @param $connection */ public function onClose($connection) { // 去除断开连接的客户端 unset($this->all[$connection->id]); } /** * 当客户端的连接上发生错误时触发 * @param $connection * @param $code * @param $msg */ public function onError($connection, $code, $msg) { echo "error $code $msg"; } /** * 每个进程启动 * @param $worker */ public function onWorkerStart($worker) { } }启动监听服务打开cmd或bash执行以下代码php server.php测试打开chrome浏览器, 先打开127.0.0.1域名下的网页( js跨域不能通讯),按F12打开调试控制台, 在console一栏输入(或者把下面代码放入到html页面用js运行)ws = new WebSocket("ws://127.0.0.1:2346"); ws.onopen = function() { alert("连接成功"); ws.send('tom'); alert("给服务端发送一个字符串: tom"); }; ws.onmessage = function(e) { alert("收到服务端的消息: " + e.data); }; ws.send('保持连接, 发第二次信息, 查看服务器回应');
2022年12月05日
21 阅读
0 评论
0 点赞
2022-12-01
centos7系统安装php8
前言centos7默认源的php版本只有5.4,版本太老,而mediawiki需要的php版本为7.4以上,所以本文直接升级到php8.0。步骤 卸载所有已安装的phpyum remove -y php* 添加remi源(可能需要提前安装epel-release)yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm # 此处若是无法下载 可用 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://rpms.remirepo.net/enterprise/remi-release-7.rpm 单独启用php80的源(没有yum-config-manager命令的话需要安装yum-utils)yum-config-manager --disable 'remi-php*' yum-config-manager --enable remi-php80 安装php及其拓展yum install -y php php-bcmath php-cli php-common php-devel php-fpm php-gd php-intl php-ldap php-mbstring php-mysqlnd php-odbc php-pdo php-pear php-pecl-xmlrpc php-pecl-zip php-process php-snmp php-soap php-sodium php-xml 版本验证php -v
2022年12月01日
15 阅读
0 评论
0 点赞
2022-06-16
AYPHP轻量级框架
开发初衷此框架陪伴了博主三年多,因为经常开发小系统,其他框架有些东西真好用(TP的连贯操作、C函数等),想把这些抠出来太难了。故此写了很多第三方类,后来觉得文件太多了,每次开发都要重新复制并命名(命名空间)很麻烦,故此开发了这样一个轻量级框架,用此框架无需担心用户注入等危险操作,框架在路由层已全面去除可能存在的危险字符(sql、xss、特殊字符)框架lib下类文件均可以独立使用,如果您并不希望使用此框架,可以单独取出所需要的类文件使用此文章将长期更新ps: 此框架支持PHP8,数据库采用PDO源码地址规范目录和文件 目录使用小写+下划线; 类库、函数文件统一以.php为后缀; 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致; 类文件采用驼峰法命名(首字母大写),其它文件采用小写+下划线命名; 类名和类文件名保持一致,统一采用驼峰法命名(首字母大写); 函数和类、属性命名 类的命名采用驼峰法(首字母大写),例如User、UserType,默认不需要添加后缀,例如UserController应该直接命名为User; 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如get_client_ip; 方法的命名使用驼峰法(首字母小写),例如getUserName; 属性的命名使用驼峰法(首字母小写),例如tableName、instance; 以双下划线“__”打头的函数或方法作为魔术方法,例如__call和__autoload; 目录结构project 应用部署目录 ├─app 应用目录 │ ├─index 模块目录(可更改) │ │ ├─controller 控制器目录 │ │ ├─model 模型目录 │ │ ├─view 视图目录 │ ├─function.php 应用(公共)自定义函数 ├─ay 框架系统目录 │ ├─unity.php 核心函数 │ ├─drive 框架驱动文件 │ ├─lib 框架类文件 │ ├─Base.php 基础定义文件 │ ├─Core.php 控制台入口文件 │ └─ay.php 框架引导文件 ├─config 框架配置目录 │ │ └─app.php 基础配置文件 │ │ └─file.php 上传配置 │ │ └─database.php 数据库配置文件 │ │ └─image.php 图片配置文件 │ │ └─redis.php redis配置文件 │ │ └─route.php 路由配置文件 ├─extend 扩展类库目录 ├─public 公共资源目录 │ ├─static 静态资源存放目录(css,js,image) │ ├─index.php 应用入口文件 │ ├─.htaccess 用于 apache 的重写 ├─temp 应用的运行时目录(可写,可设置) ├─vendor 第三方类库目录(Composer) ├─README.md README 文件核心类Request请求类引入Request类use ay\lib\Request; // 获取全部参数 dump(Request::instance()->param()); // 获取get参数参数 dump(Request::instance()->get()); // 获取post请求参数 status字段并格式化成int类型 dump(Request::instance()->post("status", "int")); // 获取put请求正文 dump(Request::instance()->put()); // 获取delete请求参数 dump(Request::instance()->delete()); Session引入Session类use ay\lib\Request; // 设置 dump(Session::set("user", "123")); // 获取 dump(Session::get("user")); // 判断是否存在 dump(Session::has("user")); // 取出并删除 dump(Session::pull("user")); // 删除 Session::delete("user");Json返回类引入json类use ay\lib\Json; $data = [ "list" => [ ["id" => 1], ["id" => 2], ["id" => 3], ] ]; // 与最外层同级 $arr = ["page" => 1]; Json::msg(200, "success", $data, $arr);返回{ "code": 200, "msg": "success", "data": { "list": [ { "id": 1 }, { "id": 2 }, { "id": 3 } ] }, "page": 1 }Xml操作引入Xml类use ay\lib\Xml; // 生成xml dump(Xml::instance()->create(["a" => 1, "d" => 2])); // 转数组 dump(xml::instance()->toArray(xml字符串)); 引入dir类use ay\lib\Dir; // 创建文件夹 dump(Dir::instance()->create(PUB . "/s")); // 获取文件扩展名 dump(Dir::instance()->getExt(PUB . "static/water/water.png")); // 显示目录树 dump(Dir::instance()->treeDir(AY)); // 遍历目录内容 dump(Dir::instance()->tree(AY)); // 删除文件夹 dump(Dir::instance()->del(PUB . "/s")); // 获取目录大小 dump(Dir::instance()->getDirSize(PUB . "static/water")); // 复制目录 dump(Dir::instance()->copy(PUB . "static/water", PUB . "static/water1")); 图像处理引入image类use ay\lib\Image; // 初始化image类 详细初始化信息 看构造函数 $image = new Image(); // 生成缩略图并返回缩略图地址 echo $image->thumb(PUB . "static/water/h.png", PUB . "static/water/h1.png", 100, 100, 1); // 添加水印 var_dump($image->water(PUB . "static/water/h.png", PUB . "static/water/h2.png", [100, 100], "", 1, "123")); 缓存类引入Cache类use ay\lib\Cache; // 设置指定缓存 dump(Cache::instance()->set('data', '123')); // 取出指定缓存 dump(Cache::instance()->get('data')); // 删除指定缓存 Cache::instance()->del('data'); // 删除全部缓存 Cache::instance()->delAll(); dump(Cache::instance()->get('data')); Curl类引入Curl类use ay\lib\Curl; $url = "https://blog.aaayun.cc/test.php"; $ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'; dump( Curl::url($url) ->userAgent($ua) // 设置ua ->referer('') // 设置来源 ->param(['user' => '测试数据']) // 设置参数 ->time(10) // 最大超时时间 ->proxy('127.0.0.1', 1080) // 设置代理 ->show(true) // 显示repose信息 ->cert('') // 设置证书 ->post() );Upload类引入Upload类use ay\lib\Upload; $upload = new Upload(PUB . 'upload/', ['txt']); dump($upload->operate('file'));Env类引入Env类use ay\lib\Env; dump(Env::get('data.debug'));Api类详细使用请看Api控制器助手函数R方法// 获取所有post参数 dump(R('post.')); // 验证post下ids参数是否存在 dump(R('?post.ids')); // 获取所有get参数 dump(R('get.')); // 验证get下id参数是否存在 dump(R('?get.id')); // 获取所有参数 注意 会多返回一个s参数 此参数为当前路由 dump(R('param')); // 获取所有文件参数 dump(R('file')); // 验证file下file参数是否存在 dump(R('?file.file'));C方法// 输出全部预定义 dump(C()); // 改变指定并返回值 dump(C('APP.DEBUG', 123)); // 增加并返回值 dump(C('AAA.ACV', 123)); dump(C()); success&&fail方法success('操作成功', 'http://baidu.com'); fail('操作失败', 'http://baidu.com');无限级分类树$arr = [ ['id' => 1, 'pid' => 0, 'name' => '一级'], ['id' => 2, 'pid' => 1, 'name' => '二级'], ['id' => 3, 'pid' => 2, 'name' => '三级'], ]; dump(tree($arr, 'id', 'pid'));其它常用方法// 导入extends目录下扩展包 extends('pay/alipay.php'); $pay = new AliPay(); // 获取来源ip dump(getIp()); // 判断当前是否是ssl dump(is_ssl()); // 抛出异常 halt(); // 跳转 go('http://baidu.com/', 3, "系统正在重定向");
2022年06月16日
10 阅读
0 评论
0 点赞
2022-02-14
基于PHP实现微信小程序客服消息功能
开启客服消息开启消息推送 地址消息加密方式:可以根据自己需要选择,本例选择”兼容模式“。数据格式:json相对于xml来说,从压缩效率及传输效率更具优势,这里我们选json。示例代码<?php /** * @author anderyly * @email admin@aaayun.cc * @link http://blog.aaayun.cc * @copyright Copyright (c) 2022 */ use ay\lib\Curl; class WeChat { public static $token = 'xxx'; // Token(令牌) public static $key = 'xxx'; // EncodingAESKey(消息加密密钥) public static $appid = 'xxx'; public static $secret = 'xxx'; public function index() { // $this->checkSignature(self::$token); // 验证 $data = file_get_contents('php://input'); $this->send($data, self::$appid, self::$secret); } public function checkSignature($token) { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = $token; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if ($tmpStr == $signature ) { exit($_GET['echostr']); } } public function getAccessToken($appid, $secret) { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $secret; $row = Curl::url($url)->get(); $row = json_decode($row, true); return $row['access_token'] ?? false; } public function send($data, $appid, $secret) { $data = json_decode($data, true); $accessToken = $this->getAccessToken($appid, $secret); $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" . $accessToken; $r = [ "touser" => $data['FromUserName'] ]; $r['msgtype'] = "link"; $r['link'] = [ "title" => "轻风云", "description" => "云淡风轻,于事安然", "url" => "http://blog.aaayun.cc", "thumb_url" => "http://blog.aaayun.cc/avatar.png" ]; $json = json_encode($r, JSON_UNESCAPED_UNICODE); Curl::url($url)->param($json)->post('json'); } }
2022年02月14日
9 阅读
0 评论
0 点赞
2021-11-18
飞尔国际源码
非资金盘系统,项目可长期运营预览程序说明源码采用php+golang+uniapp编写,可八端打包使用(安卓 iOS 小程序等)静态奖励存fil赚fil,2个fil起投,静态每天0.5%到3%收益,三倍出局动态奖励1.直推10%2.节点服务费奖励V1 业绩累积10fil享受名下会员每日静态收益1%节点服务费V2 业绩累积30fil 享受名下会员每日静态收益2%节点服务费V3业绩累积100fil享受名下会员每日静态收益3%节点服务费V4业绩累积200fil享受名下会员每日静态收益4%节点服务费V5业绩累计500fil享受名下会员每日静态收益5%节点服务费V6业绩累计1000fil享受名下会员每日静态收益7%节点服务费V7业绩累计2000fil享受名下会员每日静态收益10%节点服务费v8业绩累计数3000fil享受名下会员每日静态收益14%节点服务费v9业绩累积6000fil享受名下会员每日静态收益18%节点服务费v10业绩累积10000fil享受名下会员每日静态收益20%节点服务费 直推一人拿一代,直推两人拿两代,以此类推。3.平级奖当名下会员与你平级时,可获取直接推荐者每日动静态收益的10%
2021年11月18日
12 阅读
0 评论
0 点赞
1
2
...
9