注:本文来自网络,仅供技术分享,可替换原作者提供的图片,用来做任何图片站
演示站1:https://rj.hostloc.ltd
演示站2:http://v2ex.ltd
秀人随机图搭建教程
1.首先是图包
https://xiuren.pages.dev/xiuren-url.zip,下载这个zip,然后解压,然后服务器上:
wget -x -i xiuren-url.txt
总大小75g的样子,请确认盘大小足够
2.然后是html
https://xiuren.pages.dev/xiuren.zip,这是html下载链接
3.最后是php的api
html需要一个random.php的api,这个api返回的是json格式
我前后试了三种方案,这里全部放出来分享给大家,当然也请有能力大佬看看有没有更好的办法
首先这个php需要返回这样的数据:
{"title":"[XiuRen秀人网]第213期MAGIC写真","imgs":["https://rj.hostloc.ltd/uploadfile/202001/6/7C05727159.jpg","https://rj.hostloc.ltd/uploadfile/202001/6/0705727341.jpg","https://rj.hostloc.ltd/uploadfile/202001/6/A705727374.jpg","https://rj.hostloc.ltd/uploadfile/202001/6/9C05727945.jpg","https://rj.hostloc.ltd/uploadfile/202001/6/2705727174.jpg","https://rj.hostloc.ltd/uploadfile/202001/6/5F05727780.jpg","https://rj.hostloc.ltd/uploadfile/202001/6/CB05727279.jpg","https://rj.hostloc.ltd/uploadfile/202001/6/B505728892.jpg"]}
第一个方案是,把所有的json按行放在txt里面,然后php随机读取一行,然后返回,代码如下:
<?php header('Content-Type:application/json; charset=utf-8'); $f='1.txt'; //文件名 $a=file($f); //把文件的所有内容获取到数组里面 $n=count($a); //获得总行数 $rnd=rand(0,$n); //产生随机行号 $rnd_line=$a[$rnd]; //获得随机行 echo "$rnd_line"; //显示结果 ?>
1.txt里面放的就是所有的json,我的文件是这个,https://xiuren.pages.dev/xiurenjson.zip,下载后批量修改下域名就能用
缺点:内存好像有问题,在多人访问时,内存非常容易爆,然后php就没办法返回信息,不知道是代码的问题还是什么,希望有大佬指定
第二个方案是把json放进mysql,然后mysql随机读取
我用的方法是HeidiSQL文件导入,读取的代码是这个:
<?php header('Content-Type:application/json; charset=utf-8'); $mysqli = new mysqli("localhost", "name", "password", "db"); $sql = "select * from u2 order by rand() limit 1"; $result = $mysqli->query($sql); $res = mysqli_fetch_array($result); echo $res[0]; /* close connection */ $mysqli->close(); ?>
这个方案倒是没太大缺点,就是导入可能有点麻烦,php按行导入我不会,会的大佬可以指点一下
第三个方案也是我在用的方案,就是redis,速度非常快
写入的代码:
<?php $file = fopen("1.txt","r"); while(! feof($file)) { $redis = new Redis(); $redis->connect('xxxxxx.com', 6666); $redis->auth('password'); $redis->set(fgets($file), "name"); } fclose($file); ?>
读取的代码:
<?php header('Content-Type:application/json; charset=utf-8'); $redis = new Redis(); $redis->connect('xxxxxx.com', 6666); $redis->auth('password'); $arList = $redis->RANDOMKEY("*"); print_r($arList); ?>
要搭建的话,第一步下好图片后,把对应的文件夹放到web目录下,然后批量修改我那个json里面的域名就行