本文目录一览:
- 1、php discuz的定时任务是什么原理怎么实现的?求高手解答
- 2、discuz教程:如何去掉论坛右下角的新短消息提醒
- 3、discuz3.4首页如何调用帖子最后回复内容
- 4、discuz的loop标签取到的数据可以排序吗?怎么排序
- 5、discuz会员如何显示以下形式!最好有详细的代码或者思路!
php discuz的定时任务是什么原理怎么实现的?求高手解答
php中定时计划任务的实现原理:
当 PHP 脚本正常地运行 NORMAL 状态时,连接为有效。当远程客户端中断连接时,ABORTED 状态的标记将会被打开。远程客户端连接的中断通常是由用户点击 STOP 按钮导致的。当连接时间超过 PHP 的时限时,TIMEOUT 状态的标记将被打开。
示例代码:
?php
ignore_user_abort(true);set_time_limit(0);
date_default_timezone_set('PRC'); // 切换到中国的时间
$run_time = strtotime('+1 day'); // 定时任务第一次执行的时间是明天的这个时候
$interval = 3600*12; // 每12个小时执行一次
if(!file_exists(dirname(__FILE__).'/cron-run')) exit(); // 在目录下存放一个cron-run文件,如果这个文件不存在,说明已经在执行过程中了,该任务就不能再激活,执行第二次,否则这个文件被多次访问的话,服务器就要崩溃掉了
do {
if(!file_exists(dirname(__FILE__).'/cron-switch')) break; // 如果不存在cron-switch这个文件,就停止执行,这是一个开关的作用
$gmt_time = microtime(true); // 当前的运行时间,精确到0.0001秒
$loop = isset($loop) $loop ? $loop : $run_time - $gmt_time; // 这里处理是为了确定还要等多久才开始第一次执行任务,$loop就是要等多久才执行的时间间隔
$loop = $loop 0 ? $loop : 0;
if(!$loop) break; // 如果循环的间隔为零,则停止
sleep($loop);
// ...
// 执行某些代码
// ...
@unlink(dirname(__FILE__).'/cron-run'); // 这里就是通过删除cron-run来告诉程序,这个定时任务已经在执行过程中,不能再执行一个新的同样的任务
$loop = $interval;
} while(true);
discuz教程:如何去掉论坛右下角的新短消息提醒
如何去掉论坛右下角的新短消息提醒
打开\template\default\common\footer.htm文件,然后找到137-150行的代码删除即可
script type="text/javascript"
var h5n = new Html5notification();
if(h5n.issupport()) {
!--{if $_G[member][newpm] $_GET[do] != 'pm'}--
h5n.shownotification('pm', '$_G[siteurl]home.php?mod=spacedo=pm', '!--{avatar($_G[uid],small,true)}--', '{lang newpm_subject}', '{lang newpm_notice_info}');
!--{/if}--
!--{if $_G[member][newprompt] $_GET[do] != 'notice'}--
!--{loop $_G['member']['category_num'] $key $val}--
!--{eval $noticetitle = lang('template', 'notice_'.$key);}--
h5n.shownotification('notice_$key', '$_G[siteurl]home.php?mod=spacedo=noticeview=$key', '!--{avatar($_G[uid],small,true)}--', '$noticetitle ($val)', '{lang newnotice_notice_info}');
!--{/loop}--
!--{/if}--
}
/script
discuz3.4首页如何调用帖子最后回复内容
但是$post[]和$_G[forum_thread][]区别在于后者是全局变量,也就是调用的整个帖子的作者,即楼主,如果调用对应楼层的,那么就是loop循环中使用$post[author]。
discuz的loop标签取到的数据可以排序吗?怎么排序
可以排序啊!
举例,这样一段调用代码:
[loop]
lia href="{url}" title="{title}"{target}em{currentorder}/em{title}/a/li
[/loop]
方法1、重写代码,将上面的代码写为:
[index=1]
lia href="{url}" title="{title}"{target}em{currentorder}/em{title}/a/li
[/index]
[index=2]
lia href="{url}" title="{title}"{target}em{currentorder}/em{title}/a/li
[/index]
[loop]
lia href="{url}" title="{title}"{target}em{currentorder}/em{title}/a/li
[/loop]
index=1的意思就是取到的数据第一个,放在第一位。以此类推。
方法2、不需要重写代码,在diy模式下编辑该模块的数据,设置数据ID就可以了。
欢迎交流
discuz会员如何显示以下形式!最好有详细的代码或者思路!
后台里 门户 » 模块模板 建立一个 会员调用的模版 思路是这样的。
你可以使用[loop]...[/loop]标签来循环显示模块中的数据;如果要在模板中多处循环可以使用[loop1]...[/loop1]的方式扩展(只能扩展1-9个)
你可以使用[order=N]...[/order]标签来替代默认loop中的第N个位置数据的展示,你可以使用[order1=N]...[/order1]的方式来扩展(对应[loop1])
显示全部提示...
你可以使用[index=N]...[/index]的方式来指定第N条数据的展示方式,由该语法指定的数据不再在loop循环中出现,可以通过[index1]...[/index1]的方式来扩展(只能扩展1-9个)以实现同一条数据多处展示
你可以使用可生成缩略图的图片标签/可指定打开方式的链接,并在生成模块时指定缩略图大小/链接打开方式
某些模块(如静态模块)内容是由数据源生成的,不需要对应模板
字段项(如:{title})只在[loop]、[order]、[index]标签内生效
你可以使用[loop]...[/loop]标签来循环显示模块中的数据;如果要在模板中多处循环可以使用[loop1]...[/loop1]的方式扩展(只能扩展1-9个)
你可以使用[order=N]...[/order]标签来替代默认loop中的第N个位置数据的展示,你可以使用[order1=N]...[/order1]的方式来扩展(对应[loop1])
显示全部提示...
你可以使用[index=N]...[/index]的方式来指定第N条数据的展示方式,由该语法指定的数据不再在loop循环中出现,可以通过[index1]...[/index1]的方式来扩展(只能扩展1-9个)以实现同一条数据多处展示
你可以使用可生成缩略图的图片标签/可指定打开方式的链接,并在生成模块时指定缩略图大小/链接打开方式
某些模块(如静态模块)内容是由数据源生成的,不需要对应模板
字段项(如:{title})只在[loop]、[order]、[index]标签内生效