创世神域

Nothing is impossible.

@Puteulanus6年前

05/18
11:26
学习心得

Cron修正程序

闲着无聊练练手。。

因为1分钟一次的免费Cron实在太难找,云监控频率又普遍比较低,所以写了这货。它会在前四次执行的时候记录下执行时间,计算出Cron的执行间隔,然后从第五次开始在Cron执行的间隔中依靠自身的循环对Cron进行补充。

简单来说,它会把任意频率的Cron修正到1分钟一次。

测试中使用监控宝15分钟一次和30分钟一次的监控都运行良好,执行时间记录显示执行频率接近标准的1分钟一次。

使用方法是把它改名xcron.php【其它也行啦,别和cron文件重名就好了】,和需要执行的cron.php放在一个目录下,然后把云监控的目标设置为xcron.php。

代码:

  1. <?php
  2. // 设定参数
  3. $phpfile = ‘cron.php’;// 需要执行的Cron文件名
  4. $time = 1;// 间隔分钟数
  5. // 关闭浏览器仍然执行
  6. set_time_limit(0);
  7. ignore_user_abort(true);
  8. // 读取记录
  9. $A=$B=$C=$D= 0;
  10. $F = off;
  11. include(‘cronlog.php’);
  12. if (time() – $A < 30)
  13.     exit;
  14. // 判断是否有进程在执行
  15. if ($F == on)
  16.     exit();
  17. // 判断D是否为空
  18. if ($D == 0){
  19.     $D = $C;
  20.     $C = $B;
  21.     $B = $A;
  22.     $A = time();
  23.     writelog($A,$B,$C,$D,$F);
  24.     include($phpfile);
  25.     exit();
  26. }
  27. //  启动修正
  28. $D = $C;
  29. $C = $B;
  30. $B = $A;
  31. $A = time();
  32. $E = ($A$D)/3;
  33. writelog($A,$B,$C,$D,$F);
  34. // 计算运行次数
  35. $time *= 60;
  36. $i=round($E/$time);
  37. if ($i <= 0){
  38.     include($phpfile);
  39.     exit();
  40. }
  41. if ($i > 60){
  42.     $A=$B=$C=$D= 0;
  43.     $F = off;
  44.     writelog($A,$B,$C,$D,$F);
  45.     exit();
  46. }
  47. // 防止多进程运行
  48. $F = on;
  49. writelog($A,$B,$C,$D,$F);
  50. // 循环
  51. $u=1;
  52. while($u<=$i){
  53.     include($phpfile);
  54.     if ($A+$E-time()<120){
  55.         $F = off;
  56.         writelog($A,$B,$C,$D,$F);
  57.     }
  58.     if ($A+$E-time()<60)
  59.         exit();
  60.     sleep ($time);
  61.     $u++;
  62. }
  63. exit();
  64. // 自定义函数
  65. function writelog($A,$B,$C,$D,$F){
  66.     $file = ‘<?php’.PHP_EOL.’$A = ‘.$A.’;’.PHP_EOL.’$B = ‘.$B.’;’.PHP_EOL.’$C = ‘.$C.’;’.PHP_EOL.’$D = ‘.$D.’;’.PHP_EOL.’$F = ‘.$F.’;’.PHP_EOL.’?>’;
  67.     file_put_contents(“cronlog.php”,$file);
  68. }
  69. ?>

Cron修正程序

@Puteulanus6年前

05/2
00:32
学习心得

Openshift自动安装签到助手【已失效】

[2014年8月30日]由于KK的签到项目停止维护并关闭API,tieba-sign-install2贴吧签到助手安装项目关闭。

不想老是新建日志弄得一屏幕都是签到助手,直接在旧帖更新吧。

新版安装方法大体上和旧版相同。

新版特性:

1.强大的文件管理器。

上一个版本的文件管理器就是想让搭建的朋友能不用撸钥匙、winscp,可惜效果不佳。这回换了个文件管理器,我能想到的功能它都有了,还带了一票用不着的功能。。。反正有这货应该是可以把winscp丢一边了。

2.自定义的用户信息

上个版本中,我自动生成了所有的用户信息,虽然看起来一步到位,其实也不怎么方便。这次更新的版本重新修改安装界面,只留下了用户名、密码、用户邮箱三个项。简洁的同时不影响使用体验。

3.在线数据库管理

好吧这个是作为文件管理器插件存在的【所以说那个文件管理器功能多的吐不出槽啊】,我稍微改了改,弄成了自动获取数据库信息,这样直接连接就能在线管理数据库。

4.更稳定【貌似吧】

我做了一些细节的调整,争取让它运行的更稳定。有没效果就难说了。。

5.插件风格更新

几个更新了的插件我这儿同步更新了一下,加入了三个风格。嗯我那点儿可怜的币哗哗的就没了。

新版界面预览:
Read More →

Openshift自动安装签到助手【已失效】

@Puteulanus6年前

04/10
14:54
学习心得

Openshift搭建签到助手教程【已失效】

注意,由于签到助手需要的PHP5.3+Zend环境Openshift已经停止申请了,我们需要自己搭建环境。

编译环境耗时一小时左右,请把电脑设置为不休眠、不锁定。

史上最简单搭建教程,没有之一。

在进行此教程之前,请确定你已经申请了Openshift账号,创建了命名空间,配置好了命令行工具rhc等等。

更新:太多人问我rhc怎么配置了。。实在没接触过这东西的朋友,特别是Windows的,请戳这里:Cloud9平台使用rhc教程

教程开始:

1.首先,执行

rhc app create sign diy-0.1

创建一个“Do-It-Yourself”应用,这里sign是你的应用名字,可以根据喜好更改;diy-0.1是应用类型。

2.执行
rhc cartridge-add cron-1.4 -a sign
为应用添加Cron 1.4支持,sign是你的应用名。

3.执行

rhc cartridge-add mysql-5.5 -a sign

为应用添加MySQL数据库,sign是你的应用名。注意数据库创建完成之后会显示数据库的用户名、密码和数据库名,这个要记下来,安装签到助手的时候需要。

4.执行

rhc ssh sign

连接你的应用。

5.连接成功后,执行

echo $OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT

查看数据库服务器与数据库端口,记下来。

6.执行

cd $OPENSHIFT_HOMEDIR/app-root/repo

wget http://puteulanus.u.qiniudn.com/tieba-sign-install/install.sh;chmod 777 install.sh;./install.sh

一键安装贴吧签到助手及其所需的环境。

7.等待安装完成,大概一小时左右。

8.安装完成后,访问 你的应用地址/install ,比如我的

http://sign-puteulanus.rhcloud.com/install

进入签到助手安装界面。如果进不去可以把http换成https,或者挂梯子试试。

9.在签到助手配置页面输入之前记下的数据库信息及你希望的管理员信息,完成安装。

 

Openshift搭建签到助手教程【已失效】

@Puteulanus6年前

04/9
23:43
学习心得

结果是红帽先搞定了

这两天熟悉了git的用法,一直在撸Heroku的PHP配置,可惜Zend怎么也安不上。

想换到红帽想试试。。。php.ini【Read Only】?卧槽是我打开姿势不对么?跑网上去查,意外查到一篇在红帽布置nginx+php5.2+zend+mysql的教程,才知道原来红帽还有【Do-It-Yourself】这么个神奇的分类。。。自己安装的话总不可能还不让我访问php.ini吧?

本来想自己搭环境的,在Github上搜了一下,居然有相关的项目。果断复制到自己账号下面。。。不过作者发布是17天前,项目还有bug,没法一路顺顺畅畅得撸到结尾。改了好半天发现都是一个问题,估计是部署配置文件的程序出错了,用笨办法把配置文件中的错误一个一个修正过来之后终于运行正常了。
Read More →

结果是红帽先搞定了

@Puteulanus6年前

04/6
01:29
学习心得

博客搬家完毕

实在无法忍受XREA的不定时抽风了,昨天登后台直接403。。怒换服务商。

现在比较喜欢Beget的空间,虽然貌似数据库很小,但速度真的很快,注册限制得比较严应该也能一定程度防止遭到滥用。空间禁用的函数挺少的,而且稳定性比XREA好得多【之所以说好得多是因为前段时间另一个在Beget的站还是有过后台404的情况,只不过几天之后就好了】。

不过Beget有个小限制,同一个域名只能在一个账号里绑定,而且没有对域名的验证,也就说A可以在自己的账号里绑定B的域名,然后B就无法在Beget绑定域名了。

我这次就遇上了这个个问题,不过俩博客都是我的,因为另一个已经绑定了域名所以博客无法绑定。。在实在不想放弃一个的情况下,最后是给博客绑定了域名,而另一个站使用Latestdot+7ghost反向绑定了域名。

话说Latestdot空间略良心,就是访问速度貌似慢点,不然直接拿来作博客空间也未尝不可。

7ghost可以研究一下,如果不会触发贴吧签到助手的防修改机制的话,反向绑定红帽的空间应该能解决红帽速度慢的问题,因为不同于域名跳转,7ghost的流量都是走自己的服务器上过了一遍的。。。Latestdot不限流量这一点倒是恰好完全符合需求。

最近发现不少有趣的东西呢。。

博客搬家完毕

@Puteulanus6年前

03/18
02:12
学习心得

签到站最近进程

基本上能确定签到速度逐渐降低的原因了。

当初设计方案时考虑了db4free突然删账号或者不提供服务的情况,却没想到它的服务是逐渐不稳定起来的。前几天想在db4free申请个马甲,死活接不到邮件,才意识到可能db4free出事了。

大体说一下我的分析吧。

由于db4free的数据库访问速度严重降低,导致签到效率被极大地降低了,外在表现为网站访问速度明显降低,点击一个选项时,读取时间明显增加。当时我以为是500云的服务开始不稳定了,其实原因出在数据库上。数据库访问变慢【经常访问不到】带来的一个重要问题是,cron执行开始失败【好吧也可能是网站防火墙把我拦了?】,反正我七个副站的web cron是挨个因为执行错误次数太多而进入了挂起状态,这使得签到进一步变慢。

然后,web cron貌似还出问题了。

今天猛然发现两个靠web cron执行更新的采集站罢工了,转为D监控之后恢复正常。好吧这怪不着人家,人家首页上就写了本服务不稳定。。。

现在已把按照db4free删号预案将数据库搬运到openshift,所有副站暂时停摆,cron主要靠Zend自带的,顺便用D监控的https每十分钟一次【3节点】执行cron。国内这几天访问速度应该会直线下降,不过执行速度已经恢复正常了。话说我倒是又找到了一个免费数据库,大小只有5M,不过拿来弄签到站是够了。速度还不错,而且对申请马甲卡得比较死,现在申请了两个账号挂着例站看看稳定性,如果稳定的话过段时间可以试试用起来。

明天研究下openshift的数据库能不能开放给外网,能行的话找个国内速度快支持Zend【找不到就还是500云了】的空间做个副站,连openshift的数据库,用作访问界面。那堆分销的副站就不要了好了,既然openshift能保证效率,红帽的稳定性还是信得过的。

 

签到站最近进程

@Puteulanus6年前

02/7
00:17
学习心得

Linux撸Windows密码

昨晚看到贴吧里有吧友电脑被易语言编的恶意程序弄挂了,程序把电脑里的账户全部加上了预设的密码,顺便创了个问密码加QQ XXXXXXX的用户。一般来说这种用PE直接删密码就行,我还试了下粘滞键劫持,在登陆界面按五下shift创建新用户然后用新用户登陆。不过考虑到既然是完全不让登陆【还禁用任务管理器】,密码问QQ,应该弄不出机器码什么的,也就说密码不是随机的。

然后试了试在虚拟机里撸密码。

Read More →

Linux撸Windows密码

@Puteulanus6年前

01/26
15:41
学习心得

500云神坑Cron调戏方法

500云的Cron神级坑爹,最小执行时间5分钟一次不说,不能每日执行的bug蛋疼的一逼。Web Cron又容易被他拉黑,执行效率没有保障。昨晚本想试试找个解决方法的,还真找到点有趣的东西。

开始是想自己设定Cron,无奈500云禁用了system()等三个函数,SSH控制台的crontab就是个笑话,此路应该是不通了。

然后试着用copy()复制了下文件,无报错。想着能不能自己写个php定时把cron.php覆盖复制为cron2.php和cron3.php,因为之前提到过自己复制cron.php可以解决平日的问题,但复制出的cron无法被纳入自动更新范围,一旦贴吧签到助手的差量升级涉及到cron.php很容易使复制出的cron失效。如果能写三个php分别设定平日、周六、周日执行,不断把cron.php覆盖复制为cron2.php和cron3.php,再把cron.php、cron2.php、cron3.php分别设上平日、周六、周日,虽然麻烦了点,但也解决了这个隐患。

然后实际测试的时候,亮点来了。

Read More →

500云神坑Cron调戏方法

@Puteulanus6年前

01/24
13:50
学习心得

db4free.net免费MySQL数据库与Comcure免费数据库备份

今天凌晨500云数据库傲娇了一段时间,我正奇怪怎么一直没签到,上去一看网站都快瘫了。。。觉累不爱,加上最近有些吧友到我签到站来签到,虽然我说过不保证维护,但挂得这么快实在说不过去,索性把数据库搬了。

网上说db4free从05年开始提供免费数据库服务,连接速度略慢但非常稳定。反正我看到的介绍很多都是08年的,现在还活着稳定性应该可以吧。而且免费这么多年了不会突然收费吧。。。

而且我估摸着数据库空间应该比免费PHP空间活得久,要真猜的话我猜500云先挂,把数据库弄成单独的也免得PHP空间被滥用关闭了数据也灰飞烟灭了。当然db4free也不是绝对的保险,稳定性待测试,索性再加了一道保险,Comcure全站加数据库定时备份。

好了废话少说,开始正文吧。
Read More →

db4free.net免费MySQL数据库与Comcure免费数据库备份