首页
VIP观影
美女套图
好友导航
留言板
推荐
匿名聊天室
二级域名
常用工具
高清壁纸
影视剧院
娱乐直播
Search
1
关于【套图】贡献者说明
5,855 阅读
2
利用CSS改变图片显示风格的方法 filter
3,220 阅读
3
女神朴信惠(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤
2,630 阅读
4
WJSSK_myfriend 我的好友(导航插件) 相关说明
1,388 阅读
5
随机小姐姐跳舞视频(6362个),源码分享
1,027 阅读
随笔
技术分享
Typecho
php
Vue
微信
Happy 分享
好看的电影
好看的电视剧
登录
/
注册
Search
标签搜索
php
vue
Easypanel
typecho
mqtt
宝塔bt
centos
typecho插件
函数
云服务器
Kangle
mosquitto
mosquitto-cluster
mosquitto-auth-plug
libwebsockets-4.2.0
vue-cli
防盗链
element-plus
图片放大缩小
滚轮放大缩小
登录
Or
注册
累计撰写
111
篇文章
累计收到
193
条评论
首页
栏目
随笔
技术分享
Typecho
php
Vue
微信
Happy 分享
好看的电影
好看的电视剧
页面
VIP观影
美女套图
好友导航
留言板
推荐
匿名聊天室
二级域名
常用工具
高清壁纸
影视剧院
娱乐直播
搜索到
111
篇与
岳小威子
的结果
2023-03-17
php 页面固定时间内访问输出304
{dotted startColor="#ff6c6c" endColor="#1989fa"/}{mtitle title="来自ChatGPT的回答"/}要实现固定时间内访问输出304,需要使用HTTP缓存机制。具体步骤如下:设置响应头:在PHP脚本的开头使用header()函数设置响应头,包括Cache-Control、Expires和Last-Modified等字段。判断是否需要更新:在每次请求时,先判断客户端是否已经缓存了该资源,如果已经缓存,则比较客户端缓存的Last-Mod> ified时间和服务器端的Last-Modified时间是否一致,如果一致,则输出304 Not Modified响应,否则输出新的资源>> 内容和新的Last-Modified时间。下面是示例代码:// 设置响应头 header('Cache-Control: max-age=3600, public'); header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 3600) . ' GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($filename)) . ' GMT'); // 判断是否需要更新 if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { $last_modified_time = strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']); $current_modified_time = filemtime($filename); if ($last_modified_time == $current_modified_time) { // 输出304 Not Modified响应 header('HTTP/1.1 304 Not Modified'); exit; } } // 输出新的资源内容 readfile($filename);在上面的代码中,设置了Cache-Control、Expires和Last-Modified等响应头字段,用于控制缓存的过期时间和缓存的有效性。在判断是否需要更新时,使用了HTTP请求头中的If-Modified-Since字段,用于比较客户端缓存的Last-Modified时间和服务器端的Last-Modified时间是否一致。如果一致,则输出304 Not Modified响应,否则输出新的资源内容和新的Last-Modified时间。
2023年03月17日
13 阅读
0 评论
0 点赞
2023-03-15
php限制文件下载速度的代码
有时候你会出于某种目的而要求把下载文件的速度放慢一些,例如你想实现文件下载进度条功能。限制下载速度最大的好处>是节省带宽,避免瞬时流量过大而造成网络堵塞。本文将和你分享如何通过php代码来实现限制文件的下载速度。首先来看看利用php限制文件下载速度的代码:<?php // 将发送到客户端的本地文件 $local_file='abc.zip'; // 文件名 $download_file='your-download-name.zip'; // 设置下载速率(=> 31.2 kb/s) $download_rate=31.2; if(file_exists($local_file)&&is_file($local_file)){ header('Cache-control: private');// 发送 headers header('Content-Type: application/octet-stream'); header('Content-Length: '.filesize($local_file)); header('Content-Disposition: filename='.$download_file); flush();// 刷新内容 $file=fopen($local_file,"r"); while (!feof($file)){ print fread($file,round($download_rate*1024));// 发送当前部分文件给浏览者 flush();// flush 内容输出到浏览器端 sleep(1);// 终端1秒后继续 } fclose($file);// 关闭文件流 }else{ die('Error: 文件 '.$local_file.' 不存在!'); } 下面对以上代码做一些分析:把文件下载速度限制为31.2kb/s,即每秒仅向客户端发送20.5kb的文件流,直到发送完整个文件为止。如果没有该限制,那么文件将以流的形式一起发送到客户端,有多少发送多少,这会出现什么情况?假如文件大小为2m,那么一下子把2m的数据流传送过去,这将可能导致网络堵塞而中断脚本的执行,这种下载方式是不能在实际应用中采用的。技术方面,首先添加头文件,声明Content-Type为application/octet-stream,表示该请求将以流的方式发送,并且声明Content-Length,即声明了文件流的大小。在代码里使用了flush(),flush函数作用是刷新php程序的缓冲,实现print动态输出。另外提醒一下的是:巧妙利用上述代码,还可以实现客户端显示文件下载进度条的功能,有兴趣的朋友可以试试,这里就不多写了。以上就实现了php限制文件下载速度的功能,希望本文所述对大家的php程序设计有所帮助。
2023年03月15日
12 阅读
0 评论
0 点赞
2023-03-01
centos 快速解决磁盘挂载的问题
第一步: 查看磁盘信息fdisk -l 磁盘 /dev/vda:214.7 GB, 214748364800 字节,419430400 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节第二步: 磁盘分区fdisk /dev/vda 输入:n 默认回车 默认回车 输入:w保存第三步: 磁盘格式化mkfs.ext4 /dev/vda第四步: 挂载磁盘(建议永久挂载)临时挂载: 重启后失效 mount /dev/vda /你的挂载目录 永久挂载:重启自动挂载vi /etc/fstab # When mounting the data disk, you need to add the nofail parameter # Example # /dev/vda1 /mount_point ext4 defaults,nofail 0 0 # 新增一行 /dev/vda /你的挂载目录 ext4 defaults 0 0 esc ,:wq保存 reboot 重启之后就挂载好了。
2023年03月01日
35 阅读
0 评论
1 点赞
2023-03-01
Python 以“根”用户运行pip可能会导致权限中断和与系统包管理器的行为冲突
问题Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager以“根”用户运行pip可能会导致权限中断和与系统包管理器的行为冲突解决建立虚拟环境,基于Centos7python3 -m venv tutorial-env source tutorial-env/bin/activate然后在里面执行你的命令即可退出虚拟环境退出venv 环境,使用 deactivate 命令:deactivate
2023年03月01日
34 阅读
0 评论
0 点赞
2023-02-28
Centos下如何拷贝整个目录命令?Centos下拷贝目录命令的方法
该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,就如同DOS下的copy命令一样,功能非常强大。语法:cp [选项] 源文件或目录 目标文件或目录说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。各选项含义:-a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。-d 拷贝时保留链接。-f 删除已经存在的目标文件而不提示。-i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。-p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。-r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。-l 不作拷贝,只是链接文件。需要说明的是:为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名是一个已存在的文件名,用cp命令拷贝文件后,这个文件就会被新拷贝的源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。$ cp –i exam1.c /usr/wang/shiyan1.c该命令将文件exam1.c拷贝到/usr/wang 这个目录下,并改名为 shiyan1.c若不希望重新命名,可以使用下面的命令:$ cp exam1.c /usr/ wang/将/usr/xu目录中的所有文件及其子目录拷贝到目录/usr/liu中,命令如下:$ cp –r /usr/xu/ /usr/liu/
2023年02月28日
19 阅读
0 评论
0 点赞
2023-02-24
js 获取当前月份前后12个月
1、获取当前月份的【后】12个月,获取最近的12个月var dataArr = []; var data = new Date(); var year = data.getFullYear(); data.setMonth(data.getMonth() - 1, 1) //获取到当前月份,设置月份 for (var i = 0; i < 12; i++) { data.setMonth(data.getMonth() + 1); //每次循环一次 月份值加1 var m = data.getMonth() + 1; m = m < 10 ? "0" + m : m; dataArr.push(data.getFullYear() + "-" + (m)) } console.log(dataArr) //["2019-11", "2019-12", "2020-01", "2020-02", "2020-03", "2020-04", "2020-05", "2020-06", "2020-07", "2020-08", "2020-09", "2020-10"]2、获取当前月份的【前】12个月,获取最近的12个月var dataArr = []; var data = new Date(); var year = data.getFullYear(); data.setMonth(data.getMonth()+1, 1)//获取到当前月份,设置月份 for (var i = 0; i < 12; i++) { data.setMonth(data.getMonth() - 1);//每次循环一次 月份值减1 var m = data.getMonth() + 1; m = m < 10 ? "0" + m : m; dataArr.push(data.getFullYear() + "-" + (m)) } console.log(dataArr); // ["2019-11", "2019-10", "2019-09", "2019-08", "2019-07", "2019-06", "2019-05", "2019-04", "2019-03", "2019-02", "2019-01", "2018-12"]释疑JS的Date.setMonth()方法坑【可能存在的问题】:在业务寻找问题的时候,测试输出date.format('yyyy-MM-dd'),看到的值为2019-03-01。从2019-03-01中我发现了原因,是因为2019-02-29此天不存在,故输出2019-03-01,这才导致了输出2019-03的问题。正确设置上个月份的的方式应该为date.setMonth(date.getMonth()-1,1);使用setMonth(month,date)来进行修改,而不是使用setMonth(month)方法,避免出现此类问题。用getYear()方法取出时 结果为 119//(2019-1900=119)
2023年02月24日
20 阅读
0 评论
0 点赞
2023-02-23
Centos Screen的安装与使用
一、screen命令是什么?Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。二、如何安装screen命令?CentOS7系统可以执行:yum install screen ;CentOS8系统首先需要安装epel:yum install epel-release -y;然后再安装screen:yum install screen-y三、screen命令常用使用方法3.1 创建screen会话可以先执行:screen -S lnmp ,screen就会创建一个名字为lnmp的会话。3.2 暂时离开,保留screen会话中的任务或程序当需要临时离开时(会话中的程序不会关闭,仍在运行)可以用快捷键Ctrl+a d(即按住Ctrl,依次再按a,d)3.3 恢复screen会话当回来时可以再执行执行:screen -r lnmp 即可恢复到离开前创建的lnmp会话的工作界面。如果忘记了,或者当时没有指定会话名,可以执行:screen -ls screen会列出当前存在的会话列表,例如:11791.lnmp即为刚才的screen创建的lnmp会话,目前已经暂时退出了lnmp会话,所以状态为Detached,当使用screen -r lnmp后状态就会变为Attached,11791是这个screen的会话的进程ID,恢复会话时也可以使用:screen -r 117913.4 关闭screen的会话执行:exit ,会提示:[screen is terminating],表示已经成功退出screen会话。3.5 远程演示首先演示者先在服务器上执行 screen -S test 创建一个screen会话,观众可以链接到远程服务器上执行screen -x test 观众屏幕上就会出现和演示者同步。3.6常用快捷键Ctrl+a c :在当前screen会话中创建窗口Ctrl+a w :窗口列表Ctrl+a n :下一个窗口Ctrl+a p :上一个窗口Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换四、语法# screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>] 参数说明 -A 将所有的视窗都调整为目前终端机的大小。 -d <作业名称> 将指定的screen作业离线。 -h <行数> 指定视窗的缓冲区行数。 -m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。 -r <作业名称> 恢复离线的screen作业。 -R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。 -s 指定建立新视窗时,所要执行的shell。 -S <作业名称> 指定screen作业的名称。 -v 显示版本信息。 -x 恢复之前离线的screen作业。 -ls或--list 显示目前所有的screen作业。 -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。 在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。 C-a ? -> 显示所有键绑定信息 C-a c -> 创建一个新的运行shell的窗口并切换到该窗口 C-a n -> Next,切换到下一个 window C-a p -> Previous,切换到前一个 window C-a 0..9 -> 切换到第 0..9 个 window Ctrl+a [Space] -> 由视窗0循序切换到视窗9 C-a C-a -> 在两个最近使用的 window 间切换 C-a x -> 锁住当前的 window,需用用户密码解锁 C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。 C-a w -> 显示所有窗口列表 C-a t -> Time,显示当前时间,和系统的 load C-a k -> kill window,强行关闭当前的 window C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样 C-b Backward,PageUp C-f Forward,PageDown H(大写) High,将光标移至左上角 L Low,将光标移至左下角 0 移到行首 $ 行末 w forward one word,以字为单位往前移 b backward one word,以字为单位往后移 Space 第一次按为标记区起点,第二次按为终点 Esc 结束 copy mode C-a ] -> Paste,把刚刚在 copy mode 选定的内容贴上
2023年02月23日
37 阅读
0 评论
0 点赞
2023-02-21
不要采集了哇!流量很贵的!
不要采集了哇!流量很贵的!有需要可以商量的嘛!我做这个也是为了赚钱,我可以卖接口的啊{callout color="#ae4def"}开个价你说啥就是啥,网站给你都行!都已经亏得交不起网费了{/callout}
2023年02月21日
40 阅读
0 评论
0 点赞
2023-01-19
css 向边框里面凹陷半圆
{mtitle title="演示效果"/} .btn { width: 100px; text-align: center; height: 50px; line-height: 50px; background: #000; color: #fff; position: relative; } .btn:after { position: absolute; content: ''; width: 30px; height: 30px; background: #fff; top: 10px; right: -15px; border-radius: 100%; } .sawtooth { height: 50px; background: border-box radial-gradient(transparent 0, transparent 6px, #e24141 4px), padding-box #e24141; background-size: 20px 20px; /* background-position: 0px 0px; */ /* border-left: 0px solid transparent; */ /* border-right: 10px solid transparent; */ position: relative; border-bottom: 10px solid transparent; } .sawtooth:before { content: ' '; display: block; /* 用相同的颜色覆盖 */ background-color: #e24141; /* 绝对定位,遮住中间所有的洞,只保留边角的锯齿 */ position: absolute; top: 0; bottom: 0; /* 为锯齿保留的距离 */ left: 10px; right: 10px; z-index: -1; } button {mtitle title="直接上代码"/}<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>test</title> <style> .btn { width: 100px; text-align: center; height: 50px; line-height: 50px; background: #000; color: #fff; position: relative; } .btn:after { position: absolute; content: ''; width: 30px; height: 30px; background: #fff; top: 10px; right: -15px; border-radius: 100%; } .sawtooth { height: 50px; background: border-box radial-gradient(transparent 0, transparent 6px, #e24141 4px), padding-box #e24141; background-size: 20px 20px; /* background-position: 0px 0px; */ /* border-left: 0px solid transparent; */ /* border-right: 10px solid transparent; */ position: relative; border-bottom: 10px solid transparent; } .sawtooth:before { content: ' '; display: block; /* 用相同的颜色覆盖 */ background-color: #e24141; /* 绝对定位,遮住中间所有的洞,只保留边角的锯齿 */ position: absolute; top: 0; bottom: 0; /* 为锯齿保留的距离 */ left: 10px; right: 10px; z-index: -1; } </style> </head> <body> <div class="btn"> button </div> <div class="sawtooth"></div> </body> </html>
2023年01月19日
46 阅读
0 评论
0 点赞
2023-01-15
centos7 php7.2 安装sqlsrv 连接sql server
一、加入微软的源curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo 二、防止冲突先卸载原有版本(可选)yum remove unixODBC三、安装驱动(三个都要装上,缺一不可)yum install msodbcsql mssql-tools unixODBC-devel四、下载php_sqlsrvwget http://pecl.php.net/get/pdo_sqlsrv-5.8.1.tgz五、解压并编译安装# 解压 tar -zxvf pdo_sqlsrv-5.8.1.tgzcd pdo_sqlsrv-5.8.1# 找到自己的php安装路径 /usr/local/php/bin/phpize# 编译 ./configure --with-php-config=/usr/local/php/bin/php-config# 安装 make&&make install# 将模块添加到php配置文件(php.ini)最后一行 echo "extension = pdo_sqlsrv.so" >> /usr/local/php/etc/php.ini # 记得添加后重启php服务检查是否安装成功php --ri pdo_sqlsrv
2023年01月15日
45 阅读
0 评论
0 点赞
2023-01-13
CentOS关于crontab定时器相关说明
关于crontabcrontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ?νο?),原意是时间。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。一般CentOS系统都会自带crontab,不需要重复安装常用命令crontab -l // 查看定时器任务列表crontab -e // 设置定时器任务,一行一条 // 该命令会打开一个类似vim界面,输入命令即刻 // 定时任务:访问网页(5秒一次) */5 * * * * curl http://localhost:949/timed_exec // 定时任务:php 终端指令(10秒一次) */10 * * * * php /home/www/admin/localhost_949/wwwroot/think auto_exec start#crontab 配置文件格式 * * * * * [command] 分 时 日 月 周 命令 第1列表示分钟1~59 每分钟用*或者 */1表示 第2列表示小时1~23(0表示0点) 第3列表示日期1~31 第4列表示月份1~12 第5列标识号星期0~6(0表示星期天) 第6列要运行的命令 # 案例 # 每晚的21:30 重启apache 30 21 * * * /etc/init.d/httpd restart # 每月1、10、22日的4:45重启apache 45 4 1,10,22 * * /etc/init.d/httpd restart # 每天18:00至23:00之间每隔30分钟重启apache 0,30 18-23 * * * /etc/init.d/httpd restart # 每半小时重启apache */30 * * * * /etc/init.d/httpd restart{dotted startColor="#ff6c6c" endColor="#1989fa"/}{callout color="#4dcfef"}可以前往 crontab在线测试工具 ,试一下你的时间设置是否正确。{/callout}
2023年01月13日
26 阅读
0 评论
0 点赞
2023-01-13
php 如何设置时区
php设置时区的方法:1、修改配置文件“php.ini”中“date.timezone”的值;2、利用函数“date_default_timezone_set”临时设置时区。PHP 中的时区设置 date.timezone对于相同的时间戳,如果时区不同,得到的日期时间字符串也会不同。因此,设置正确的时区非常必要。不同的时区,会影响 date('Y-m-d H:i:s', time()) 或类似函数的值。设置时区有以下两种方法:1. 修改配置文件 php.ini 中 date.timezone 的值,将其设置为亚洲上海时区,也就是中国的时区。重启web服务器后,就可以永久生效。# 亚洲上海 date.timezone=Asia/Shanghai # 或着 # 亚洲重庆 date.timezone=Asia/Chongqing2. 利用函数临时设置时区设置时区:函数 date_default_timezone_set(string $timezone_identifier) 返回布尔型,设置成功返回 true,失败返回 false。获取当前时区:函数 date_default_timezone_get(),可以获取函数调用处正在起作用的时区,返回时区字符串。# 临时设置时区为亚洲上海 date_default_timezone_set('Asia/Shanghai');
2023年01月13日
36 阅读
0 评论
0 点赞
1
2
...
10