fsockopen 长连接 文件流读取

2016-6-11 奇Yu WEB开发

正常使用fsockopen 模拟POST GET读取 HTTP 协议 使用

读取的时候都是用


while (!feof($fp)) {   
echo fgets($fp, 128);   
}   
但是如果这个链接是 是一个TPC 长连接。这样读取就会 一直读一直读,原因是 feof一直没有到结尾


可以看 feof的解释是

C5E5C326-AE57-414D-B879-B20BF9F307C5.png

因为HTTP 的请求 服务器完成后自动断开了,所以可以读取到,而socket长链接 并没有直接断开,

现在解决办法 

要么在服务器端 断开这个链接

或者 服务器端输出的时候 加上 一个EOF 标志  然后在客户端判断这个标志 停止读取


<?php

error_reporting(E_ALL);

$fp = fsockopen("127.0.0.1", 88, $errno, $errstr, 10);
if (!$fp) {
    echo $errstr . " (". $errno . ")<br>n";
} else {

   $a=(json_encode(array('path'=>'user/user/login','param'=>array('aaa'=>'aaa'))));

   fputs($fp,$a);

    $cursor = "";
    $inData = "";
     while(!strstr($inData,"\r\n")) {
      $cursor= fgets($fp,128);
      $inData.=$cursor;
    }

    echo $inData;


    fclose($fp);
}



?>



标签: php

评论(0) 浏览(725)

php API Manager php 的API接口文档管理程序

2015-8-18 奇Yu WEB开发

需要 服务器支持PDO才可以。我的服务器没有开PDO所有只能贴图

显示效果

11111.png


编辑时候的效果

QQ截图20150818182154.png



php api manage
欢迎使用 接口管理工具v1.1

[安装步骤]

第一步: 新建数据库导入 db.sql

第二步: 修改./MinPHP/core/config.php 数据库配置段

第三步: 愉快的使用ing

[注]

1)此版本为v1.0版本,权限控制。仅有超级管理员权限

2)”游客”,只能查看接口分类,与接口信息(无增删改查权限)

3)此版本默认的管理员有两个分别为admin(密码:654321)与root(密码:123456)。 帐号可以手动修改user数据表

[作者]

email: gongcoder@gmail.com qq: 309581329

原git clone https://github.com/gongwalker/ApiManager.git

v1.2更新记录 

添加API 接口时

增加TEST 按钮可以直接测试 

返回数据增加JSON 解析

 预览接口时 

增加JSON 解析


标签: oa php

评论(2) 浏览(4842)

Thinkphp mysql 表结构操作 类

2015-3-30 奇Yu WEB开发

<?php
/*
 *    mysql表结构处理类
 *    创建数据表,增加,编辑,删除表中字段
 *
 */
namespace Org\Util;
class Msqlstruct
{
    /*
     * 创建数据库,
     * table 要查询的表名
     */
    function createTable($sql,$table){
       M()->execute($sql);
       return $this->checkTable($table);
    }
    /**
     *删除表
     * @param 表明 $table
     * return bool    
     */
    function dropTable($table){
        $sql="DROP TABLE `__PREFIX__{$table}`";  
        M()->execute($sql);       
        return true;
      
    }
    /*
     * 检测表是否存在,也可以获取表中所有字段的信息
     * table 要查询的表名
     * return 表里所有字段的信息
     */
    function checkTable($table){
       $sql="desc `__PREFIX__{$table}`";
       $info=M()->execute($sql);
        return $info;
    }
    
    /*
     * 检测字段是否存在,也可以获取字段信息(只能是一个字段)
     * table 表名
     * field 字段名
     */
    function checkField($table,$field){
        $sql='desc `__PREFIX__'.$table.'` `'.$field.'`'; 
        $info=M()->execute($sql);                       
        return $info;
    }
    
    /*
     * 添加字段
     * table 表名
     * info  字段信息数组 array
     * return 字段信息 array
     */
    function addField($table,$info){
        $sql="alter table `__PREFIX__{$table}` add ";               
        $sql.=$this->filterFieldInfo($info);  
        M()->execute($sql);              
       return $this->checkField($table,$info['name']);
    }
    
    /*     
     * 修改字段类型
     * 不能修改字段名称,只能修改
     */
    function editField($table,$info){
        $sql="alter table `__PREFIX__{$table}` modify ";
        $sql.=$this->filterFieldInfo($info);     
        M()->execute($sql);      
       return $this->checkField($table,$info['name']);
    }
    /**
     * 修改字段名称
     * alter table     tablename    change   old_field_name    new_field_name  old_type;
     */
    function changeField($table,$old_field_name,$info){
        $sql="alter table `__PREFIX__{$table}` change  `{$old_field_name}` ";
        $sql.=$this->filterFieldInfo($info);
        M()->execute($sql);    
       return $this->checkField($table,$info['name']);
    }
             
    
    /*
     * 字段信息数组处理,供添加更新字段时候使用
     * info[name]   字段名称
     * info[type]   字段类型
     * info[length]  字段长度
     * info[isNull]  是否为空
     * info['default']   字段默认值
     * info['comment']   字段备注
     */
    private function filterFieldInfo($info){        
        if(!is_array($info))
            return
            $newInfo=array();
        $newInfo['name']=$info['name'];
        $newInfo['type']=$info['type'];
        switch($info['type']){
            case 'varchar':
            case 'char':                
                $newInfo['length']=empty($info['length'])?100:$info['length'];               
                $newInfo['isNull']=$info['isNull']==1?'NULL':'NOT NULL';
                $newInfo['default']=empty($info['default'])?'':'DEFAULT '.$info['default'];
                $newInfo['comment']=empty($info['comment'])?'':'COMMENT '."'".$info['comment']."'";
                break;
            case 'int':
                $newInfo['length']=empty($info['length'])?7:$info['length'];
                $newInfo['isNull']=$info['isNull']==1?'NULL':'NOT NULL';
                $newInfo['default']=empty($info['default'])?'':'DEFAULT '.$info['default'];
                $newInfo['comment']=empty($info['comment'])?'':'COMMENT '."'".$info['comment']."'";
                break;
            case 'text':
                $newInfo['length']='';
                $newInfo['isNull']=$info['isNull']==1?'NULL':'NOT NULL';
                $newInfo['default']='';
                $newInfo['comment']=empty($info['comment'])?'':'COMMENT '."'".$info['comment']."'";
                break;
        }      
        $sql="`".$newInfo['name']."` ".$newInfo['type']." ";
        $sql.=(!empty($newInfo['length']))?'('.$newInfo['length'].') ':' ';
        $sql.=$newInfo['isNull'].' ';
        $sql.=$newInfo['default'];
        $sql.=$newInfo['comment'];
        return $sql;
    }
    
    /*
     * 删除字段
     * 如果返回了字段信息则说明删除失败,返回false,则为删除成功
     */
    function dropField($table,$field){
        $sql="alter table `__PREFIX__{$table}` drop column `{$field}`";
        M()->execute($sql);
        if($this->checkField($table,$field)){
            return false;
        }else{
            return true;
        }
    }
    
    /*
     * 获取指定表中指定字段的信息(多字段)
     */
    function getFieldInfo($table,$field){
        $info=array();
        if(is_string($field)){
            $this->checkField($table,$field);
        }else{
            foreach($field as $v){
                $info[$v]=$this->checkField($table,$v);
            }
        }
        return $info;
    }
    
}

?>

标签: php

评论(0) 浏览(1840)

php 银行贷款利息 等额本息 等额本金

2015-2-1 奇Yu WEB开发

//等额本金还款法
  private  static function debj($borrow_amount, $rate, $drepay_time,$showYue=false){     
   
       //累计还款总额
       $HuanKuanZonge=0;
       //月本金
       $yueBenJin = $borrow_amount / $drepay_time;
     
   
       $fh = array();
       $fh['yueBenJin'] = $yueBenJin;
   
        //余额
       $yue = $borrow_amount;
       $sz = array();
       for($i = 1; $i <= $drepay_time; $i++)
       {
           $yueHuanKuan = $borrow_amount/$drepay_time + ($borrow_amount-$borrow_amount*($i-1)/$drepay_time)*$rate;//第i月还款额
        
           if ($i == 1)
           {
               //首月还款
               $fh['shouYueHuanKuan'] = $yueHuanKuan;
           }
           if ($i == 2)
           {
               //每月递减
               $fh['meiYuDiJian'] = $fh['shouYueHuanKuan'] - $yueHuanKuan;
           }
           $HuanKuanZonge = $HuanKuanZonge + $yueHuanKuan;
           $yueLiXi = $yueHuanKuan - $yueBenJin;
           $yue = $yue - $yueBenJin;
   
           $xj = array();
           $xj['bh'] = $i;
           $xj['yueLiXi'] = $yueLiXi;   //月利息
           $xj['yueBenJin']=$yueBenJin; //月本金
           $xj['yueHuanKuan'] = $yueHuanKuan;   //月还款
           $xj['yue'] = $yue;     //余额
           $sz[$i-1] = $xj;
       }
       $fh['zongLiXi'] = $HuanKuanZonge - $borrow_amount;
       $fh['huanKuanZongHe'] = $HuanKuanZonge;

       if ($showYue)
       {
           $fh['xx'] = $sz;
       } 
       return $fh;

}


//等额本息

	
/**
*
* @param 总金额 $je
* @param 月利率 $ylv
* @param 借款时间 $qx
* @param bool 是否显示详细 $isshow
* @return multitype:number multitype:multitype:number Ambigous <string, number>
*/
private static function debx($je, $ylv, $qx,$isshow=false)
{
//每月还款
$yhk=$je * $ylv * (pow(1+$ylv, $qx)/(pow(1+$ylv, $qx) -1));;
//累计还款总额
$hkze=$yhk * $qx;
//累计支付利息
$zlx=$hkze - $je;
$fh = array();
$fh['zongLiXi'] = $zlx;
$fh['huanKuanZongHe'] = $hkze;
$fh['yueHuanKuan'] = $yhk;
if ($isshow)
{
$ye = $je; //贷款余额
$sz =array();
for ($i=1; $i<=$qx; $i++)
{
$ylx = $ye * $ylv;
$ybj = $yhk-$ylx;
$ye -= $ybj;
$xj = array();
$xj['bh'] = $i;
$xj['yueLiXi'] = $ylx; //月利息
$xj['yueBenJin'] = $ybj; //月本金
$xj['yueHuanKuan']=$ylx+$ybj;//月还款
$xj['yue'] = $ye; //余额
$sz[$i-1] = $xj;
}
$fh['xx'] = $sz;
}
return $fh;
}

标签: php

评论(1) 浏览(1856)

php 命名空间 new变量 的类

2015-1-22 奇Yu WEB开发

当工作中需要调用一个变量的类的时候

因为试用了命名空间

如果直接 写成

new \Common\Lib\$className();

这样是不行的

解决办法有使用

evel('new \Common\Lib\$className()');

5.5后可以使用

ReflectionClass 类反射然后 在用newInstanceArgs 实例化


其实更简单的办法就是 拼接字符串

既然在 NEW的时候不能拼接

完全可以在NEW之前拼接

 $c="className";  //类名
  $class='\Common\Lib'.'\\'.$c;    //拼接  
   $a=new $class();   
注意 拼接的时候需要 转移最后一个 \

标签: php

评论(0) 浏览(1266)

php gmstrftime() 函数使用方法详解

2014-10-11 奇Yu WEB开发

Definition and Usage
定义和用法

The gmstrftime() function formats a GMT/UTC time or date according to locale settings.
gmstrftime()函数的作用是:根据区域设置格式化GMT/UTC时间/日期。

Syntax
语法

gmstrftime(format,timestamp)
Parameter参数 Description描述
format Required. Specifies how to return the result: 
必要参数。指定了返回结果的方法:
  • %a - abbreviated weekday name 
    %a – 缩略的表示星期几的名称
  • %A - full weekday name 
    %A – 表示星期几的全称
  • %b - abbreviated month name 
    %b – 月份简称
  • %B - full month name 
    %B – 月份全称
  • %c - preferred date and time representation 
    %c – 首选的日期和时间表示法
  • %C - century number (the year divided by 100, range 00 to 99) 
    %C – 表示世纪的数字(年份除以100,范围从00到99)
  • %d - day of the month (01 to 31) 
    %d – 一个月包含的天数(从01到31)
  • %D - same as %m/%d/%y 
    %D – 时间格式,与%m/%d/%y表示法相同
  • %e - day of the month (1 to 31) 
    %e - 一个月包含的天数,数字前不包括0(从1到31)
  • %g - like %G, but without the century 
    %g – 与%G雷同,但除去“世纪[century]”
  • %G - 4-digit year corresponding to the ISO week number (see %V). 
    %G – 与ISO星期数相对应的4位数年份(见%V)
  • %h - same as %b 
    %h – 与%b相同
  • %H - hour, using a 24-hour clock (00 to 23) 
    %H – 小时,使用24小时时钟(00到23)
  • %I - hour, using a 12-hour clock (01 to 12) 
    %I – 小时,使用12小时时钟(01到12)
  • %j - day of the year (001 to 366) 
    %j – 一年的天数(001到366)
  • %m - month (01 to 12) 
    %m – 月份(01到12)
  • %M - minute 
    %M – 分钟
  • %n - newline character 
    %n – 换行符
  • %p - either am or pm according to the given time value 
    %p – 与给定的时间值相对应的am或pm
  • %r - time in a.m. and p.m. notation 
    %r -用am或pm表示给定的时间
  • %R - time in 24 hour notation 
    %R – 用24小时制表示的时间
  • %S - second 
    %S – 秒
  • %t - tab character 
    %t – tab键/制表符
  • %T - current time, equal to %H:%M:%S 
    %T – 当前时间,与“%H:%M:%S”组合相同
  • %u - weekday as a number (1 to 7), Monday=1. Warning: In Sun Solaris Sunday=1 
    %u – 以数字形式表示星期几(1到7),Monday=1。提醒:在SUN Sloaris系统中,Sunday=1
  • %U - week number of the current year, starting with the first Sunday as the first day of the first week 
    %U – 当今年份中包含的周的总数,以第一个星期日作为第一周的第一天
  • %V - The ISO 8601 week number of the current year (01 to 53), where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week 
    %V – 在当今年份中所包含的ISO 8601格式下的周的总数(01到53),week 1表示第一周,以周一作为每周的第一天
  • %W - week number of the current year, starting with the first Monday as the first day of the first week 
    %W – 当前年份中包含的周的总数,以第一个星期一作为第一周的第一天
  • %w - day of the week as a decimal, Sunday=0 
    %w – 以数字的形式表示星期几,Sunday[星期日]=0
  • %x - preferred date representation without the time 
    %x – 选取除去时间[time]的日期[date]
  • %X - preferred time representation without the date 
    %X –选取除去日期[date]的时间[time]
  • %y - year without a century (range 00 to 99) 
    %y – 只显示包含年份的数字,不包含表示世纪的数字(00-99)
  • %Y - year including the century 
    %Y – 显示包含世纪数字的年份(即:四位数字表示的年份,如:1999,2001等)
  • %Z or %z - time zone or name or abbreviation 
    %Z或%z – 前者为时区名称;后者为时区名称的简称
  • %% - a literal % character 
    %% - 输出“%”字符串
timestamp Optional. Specifies the date or time to be formatted. If no timestamp is specified, it uses the current GMT time.
可选参数。指定日期或时间的格式。如果没有指定时间戳[timestamp],那么将默认使用当前的GMT时间。

Tips and Notes
提示

Tip: This function is identical to strftime() except that the time returned is Greenwich Mean Time (GMT).
提示:gmstrftime()函数与strftime()函数用法大致相同,唯一的不同点是gmstrftime()函数返回的格林威治时间(GMT:Greenwich Mean Time)。

Example
案例

Example of both strftime() and gmstrftime():
strftime() 和 gmstrftime()的案例:

<?php
echo(strftime("%b %d %Y %X", 
mktime(20,0,0,12,31,98))."<br />");
echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,12,31,98))."<br />");
//Print the current date, time, and time zone.
echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time()));
?>

The output of the code above could be:
上述代码将输出下面的结果:

Dec 31 1998 20:00:00Dec 31 1998 19:00:00It is Wed on Jan 25, 2006, 11:32:10 time zone:
 W. Europe Standard Time

标签: php

评论(0) 浏览(2242)

Powered by emlog 豫ICP备14014990号-1 sitemap