碰到页面程序执行超时时会提醒Fatal error: Maximum execution time of 300 seconds exceeded 是因为程序执行时间超过了最大允许执行时间,解决办法我总结了好几个大家选择适合自己的吧。
对于函数我们可以常用下面方法,直接给函数设置超时时间。
代码如下 |
复制代码 |
declare(ticks = 1);
function a(){
sleep(10);
echo "a finishi ";
}
function b(){
echo "Stop ";
}
function c(){
usleep(100000);
}
function sig(){
throw new Exception;
}
try{
pcntl_alarm(1);
pcntl_signal(SIGALRM, "sig");
a();
pcntl_alarm(0);
}catch(Exception $e){
echo "timeout ";
}
b();
a();
b(); |
来操作
对于文件或程序代码可使用set_time_limit只是设置你的PHP程序的超时时间
解决方法:
1. 修改php.ini文件:
代码如下 |
复制代码 |
max_execution_time = 30 ; // Maximum execution time of each script, in seconds |
原值30秒,你可以改大点。
改完后记得重启php。该方法改了后对所有程序生效。
2. 修改你的程序,在你需要耗时超过默认值(30秒)的脚本中,加入代码:
代码如下 |
复制代码 |
set_time_limit(300); // 最大执行时间这里设置300秒 |
设置成0表示不限时。
在php中要生成迅雷、快车、QQ旋风下载链接我们会使用到的加密方式有base64_encode与base64_decode来生成,下面看两个例子,希望对你会带来帮助。
在一些资源下载共享站点中,我们经常遇到需要在下载页中添加各种下载工具链接的情况。传统的利用各下载工具官方提供的脚本(.js)生成链接的方式,其弊端已日渐突出,如加载速度慢、客户端兼容性问题等。
本文将介绍如何通过 PHP 函数处理,轻松生成制作各种第三方下载工具的链接数据,并直接输出到前台上。
该功能所用到的 PHP 函数:
1. base64_encode: 用于以 base64 方式加密字符串;
2. base64_decode: 用于解密以 base64 方式加密的字符串。
例子1
以原始下载地址生成第三方工具下载链接 PHP 代码:
代码如下 |
复制代码 |
$url = 'http://www.example.com/document.zip';
// 可从以下代码推知各种第三方工具下载链接的精确构成
$url_thunder = 'thunder://' . base64_encode ( 'AA' . $url . 'ZZ' );
$url_flashget = 'flashget://' . base64_encode ( '[FLASHGET]' . $url . '[FLASHGET]' );
$url_qqdl = 'qqdl://' . base64_encode ( $url );
|
从第三方工具下载链接还原成原始链接 PHP 代码:
代码如下 |
复制代码 |
$url_old = '';
// 将字符串以 // 为界限分开
$temp = explode ( '//' , $url_old, 2 );
// 判断 // 前的字符(已转换为小写)
switch ( strtolower( $temp[0] ) ) {
case 'thunder:':
$url_new = substr ( base64_decode ( $temp[1] ), 2, -2 );
break;
case 'flashget:':
$url_new = substr ( base64_decode ( $temp[1] ), 10, -10 );
break;
case 'qqdl:':
$url_new = base64_decode ( $temp[1] );
break;
}
|
例子2
代码如下 |
复制代码 |
<?php
function zhuanhuan() {
$urlodd=explode('//',$_GET["url"],2);//把链接分成2段,//前面是第一段,后面的是第二段
$head=strtolower($urlodd[0]);//PHP对大小写敏感,先统一转换成小写,不然 出现HtTp:或者ThUNDER:这种怪异的写法不好处理
$behind=$urlodd[1];
if($head=="thunder:"){
$url=substr(base64_decode($behind), 2, -2);//base64解密,去掉前面的AA和后面ZZ
}elseif($head=="flashget:"){
$url1=explode('&',$behind,2);
$url=substr(base64_decode($url1[0]), 10, -10);//base64解密,去掉前面后的[FLASHGET]
}elseif($head=="qqdl:"){
$url=base64_decode($behind);//base64解密
}elseif($head=="http:"||$head=="ftp:"||$head=="mms:"||$head=="rtsp:"||$head=="https:"){
$url=$_GET["url"];//常规地址仅支持http,https,ftp,mms,rtsp传输协议,其他地貌似很少,像XX网盘实际上也是基于base64,但是有的解密了也下载不了
}else{
echo "本页面暂时不支持此协议";
}
return $url;
}
if($_GET["url"]!=NULL){
$url=zhuanhuan($_GET["url"]);
$url_thunder="thunder://".base64_encode("AA".$url."ZZ");//base64加密,下面的2也一样
$url_flashget="Flashget://".base64_encode("[FLASHGET]".$url."[FLASHGET]")."&aiyh";
$url_qqdl="qqdl://".base64_encode($url);
}
?>
<form action=cs.php method=GET>
请输入普通链接或者迅雷,快车,旋风链地址:
<input type=text name="url" size="80">
<input type=submit value="转换">
</form>
<p>实际地址:<a href="<?php echo $url;?>" target="_blank"><?php echo $url;?></a>
<p>迅雷链:<a href="<?php echo $url_thunder;?>" target="_blank"><?php echo $url_thunder;?></a>
<p>快车链:<a href="<?php echo $url_flashget;?>" target="_blank"><?php echo $url_flashget;?></a>
<p>旋风链:<a href="<?php echo $url_qqdl;?>" target="_blank"><?php echo $url_qqdl;?></a>
|
生成效果如下
php生成word文档比excel感觉要方便多了,他只要设置一下头部信息我们就可以直接使用fopen来实现读取操作,下面看几个例子。
php直接用fopen生成的核心代码是
代码如下 |
复制代码 |
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">'.你的放的数据.'</html>
|
例子
代码如下 |
复制代码 |
function word($data,$fileName=''){
if(empty($data)) return '';
$data='<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">'.$data.'</html>';
if(empty($fileName)) $fileName=date('YmdHis').'.doc';
$fp=fopen($fileName,'wb');
fwrite($fp,$data);
fclose($fp);
}
|
示例如下:
代码如下 |
复制代码 |
<?php
$str='<title>利用php创建word文档</title>
<h1>利用php创建word文档</h1>
作者:phpernote.com
<hr size=1>
<p>如果你打开word.doc,看到了这里的介绍,则说明word文档创建成功了。</p>
<p>
<b>版权所有:</b>
<br>www.111cn.net
<hr size=1>';
word($str);
|
为了方便使用我们把它整理成一个类文件
代码如下 |
复制代码 |
<?php
class word
{
/*
@GNU:GPL
@author axgle <axgle@yahoo.com.cn>
@date 2005.4.20
*/
function start()
{
ob_start();
print'<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">';
}
function save($path)
{
print "</html>";
$data = ob_get_contents();
ob_end_clean();
$this->wirtefile ($path,$data);
}
function wirtefile ($fn,$data)
{
$fp=fopen($fn,"wb");
fwrite($fp,$data);
fclose($fp);
}
}
?>
|
使用方法超级简单
代码如下 |
复制代码 |
<?php
include("word.php");
$word=new word;
$word->start();
?>
|
查询mysql数据生成word也是非常的简单我们只要连接数据库,然后把数据库的内容存放在类的$word字段中,然后再利用$word->start();生成即可。
今天发现本站的上一页与下一页出现有问题,上一页没有问题但是在下一页是直接到了本频道最新发布的文章了,按原理应该是文章本身ID的前与后的ID才是上下页吧,下面我来与大家详细讲述一下。
先看个例子
1,2,3,4,5
假如上面5个是ID了,我要对上一页排序直接使用order by id desc ,如我当前ID为3那么出来的是2才对,对下一页我们要用order by id asc得出的排序应该是,4,好了原理就这么简。
sql实现方法
代码如下 |
复制代码 |
上一页
$sql ="Select 字段 from 表名 where id<3 order by id desc limit 1";
下一页
$sql ="Select 字段 from 表名 where id>3 order by id asc limit 1";
|
得出的结果与我们想的是一样的,好了最后我把自己以前写的一个函数分享给各位。
代码如下 |
复制代码 |
/*
上一页,下一页
int $tag 0上一页,1下一页
int $fid www.111Cn.net
*/
function nextPre($tag=0,$zid,$fid)
{
if( $tag )
{
$sql ="Select 字段 from 表名 where id<$fid order by id desc limit 1";
}
else
{
$sql ="Select 字段 from 表名 where id>$fid order by id asc limit 1";
}
//$sql = "Select * from 表名 where order by id desc limit 0,10";
$result = mysql_query($sql) or die('query error');
if( mysql_num_rows( $result ) )
{
$rs = mysql_fetch_array( $result );
return "<a href="".$rs['s_url']."">".$rs['title']."</a>";
}
else
{
return '没有了';
}
}
|
注意:本站原创教程转载必须注明来源http://www.111cn.net 否则后果自负
下面给大家分享一个Php实现无限栏目分类读取的例子,希望文章对各位会带来帮助。
实现无限极栏目分类思路: 获取自增加ID(也就是父ID) 然后在到数据库获取子ID(也就是uid子id) 数据如下
id:1 uid:0 我是栏目1
id:2 uid:1 我是栏目2
id:3 uid:1 我是栏目1的子类
显示结果:
我是栏目1
我是栏目1的子类
我是栏目2
下面是Php代码
代码如下 |
复制代码 |
<?php
$query = $this->db->query("SELECT * FROM category");
$list = $query->result();
foreach($list as $v){
if($v->category_id == 0){//获取父栏目(等于0的都是父栏目)
$categoryul = anchor("home/content/".$v->id,$v->category_name);
echo "<ul>".$categoryul."</ul>";
$listx = $this->Listx->list_id($v->id);//在根据父id显示出指定的子栏目
foreach($listx as $vid){
$category = anchor("home/content/".$vid->id,$vid ->category_name);
echo "<li>".$category."</li>";
}
}
}
?>
|
标签:[!--infotagslink--]