php创建倒计时工具,让你保持专注

工作过程中,时常会被各种杂事打乱,有一个倒计时工具可以帮助自己在一定时间内集中注意力。网上虽然有现成的工具,但用着不太顺手,要么功能太简单,要么太复杂,过于占用资源,且缺乏自定义。

作为爱折腾的程序员,自己用PHP写了一个倒计时工具。

效果显示

image.png

每秒钟更新文件内容,看起来就是倒计时的效果

image.png

时间结束后会激活windows弹出窗口:

image.png

实现原理

php程序在后台静默运行,每秒钟执行一次循环并写入到文件,实现倒计时效果。当时间结束后,调用bat文件弹出窗口

php代码:

<?php
$task = '写文章'; // 任务名称
$duration = 25; // 设置时长
$rest = 5; // 休息时间
$now = time();
$batName = 'clock.bat'; // 调用的bat文件
$relatePath = './' . $batName;
$recordPath = './record_time.md'; // 文本倒计时
$absolutePath = str_replace('php', 'bat', __FILE__);
$seconds = $duration * 60;
file_put_contents($recordPath, '');
for ($i=$seconds; $i > 0; $i--) {
    $hour = floor($i / 3600) ? floor($i / 3600) . '时' : '';
    $minute = floor($i / 60) ? floor($i / 60) . '分' : '';
    $second = $i % 60 ? $i % 60 . '秒' : '';
    $message = "当前任务:{$task}\n当前时间:" . date('Y-m-d H:i:s', time()) . "\n" . "专注时间:{$duration}分钟\n" . "剩下:" . $hour . $minute . $second;
    file_put_contents($recordPath, $message);
    sleep(1);
    if ($i == 1) {
        $content = "Great! You have been working for $duration minute! Now, Relax yourself $rest minute!";
        $content = 'msg * "' . $content . '"';
        file_put_contents($relatePath, $content);
        exec($absolutePath); // 执行bat文件
    }
}

bat文件:

msg * "Great! You have been working for 25 minute! Now, Relax yourself 5 minute!"

提示

image.png

  • 默认情况下,exec函数可能被禁用,要在php.ini中开启该功能

源码下载

源码资源的git地址

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

WordPress高亮插件:Crayon Syntax Highlighter加载优化

Crayon Syntax Highlighter 是我这种代码控的必装插件。但是,这款插件也有一些小缺憾,比如体积大、拖慢速度、容易产生冲突等。很多博主就是因...

2819
来自专栏哎_小羊

解决JavaMail 发送邮件javax.mail.MessagingException: 501 Syntax: HELO hostname问题

前些天,在Linux服务器上使用JavaMail发送邮件时,总是报javax.mail.MessagingException: 501 Syntax: HELO...

21310
来自专栏IT笔记

Nginx学习之合并请求连接加速网站访问

作为这个世界上最好的web服务器之一,Nginx的优势不明而喻。下面来讲讲,Nginx是如何合并请求连接的。 小知识 当我们在浏览网页的时候,对浏览速度有一个重...

3186
来自专栏我是攻城师

使用ES-Hadoop插件结合spark向es插入数据

4125
来自专栏前端知识铺

tinypng upload一键压缩上传工具,告别人肉

有兴趣的可以玩一玩,因为平时经常会用到图片压缩,上传,如果你也觉得很繁琐的话,这个将会解决你的痛点。

1186
来自专栏Netkiller

软件架构师面试题(持续更新中)

软件架构师 插件的实现原理 插件有几部分组成 如何实现插件安装,卸载,启用,禁用? 安装,卸载,启用,禁用怎样实现不停机,不关闭服务的情况进行? 口述如何设计一...

3125
来自专栏吴老师移动开发

【iOS开发】启动时间优化,runloop的一个小技术点

刚接触项目不久,最近产品说有一个点要优化,App的启动页面显示时间太长了。一直在开发其它的app,还真没注意这个点,去看了一下还真是,有的时候启动页面的显示时间...

672
来自专栏IT可乐

HTML中的超链接

超链接:也叫URL(Uniform Resource Locator),就是统一资源定位器。一般效果是我们点击网页上某个地方,网页会自动跳转到另外一个地方。 一...

1885
来自专栏web编程技术分享

列举两个前端开发中的“灵异事件”0102

3245
来自专栏前端儿

JS监听页面关闭

JS可以监听浏览器页面的关闭,主要使用了window对象的onbeforeunload方法

1261

扫码关注云+社区