小左闲谈

【摘】PHP Socket编程 之使用fsockopen()函数

当前位置:首页 » 学习
In 学习  @2017-11-07

Socket可以理解为两台计算机相互通信的通道。

用法:使用fsockopen()函数

具体用法详见上篇文章。函数的参数为URL、端口号、一个存放错误编号的变量、一个存放错误信息字符串的变量和超时等待时间。(只有第一个参数是必须的)

常见的端口:

21(FTP)
22(SSH)
23(Telnet)
25(SMTP)
80(Web)
110(POP)
3306(MySql)

其中,组成URl的几个部分为:协议名scheme,主机host,端口号port,文件路径path,查询参数query

当url是http://www.example.com/view.php?week=1#demo时:

Scheme:http
Host:www.example.com
Port:80
Path:View
Query:Week=1
Fragment:#demo

常见的HTTP状态码:

200:OK
204:NO Content
400:Bad Request
401:Unauthorized
403:Forbidden
404:Not Found
408:Time out
5**:Server error

示例

<?PHP  
       function check_url($url){  
              //解析url  
              $url_pieces = parse_url($url);  
              //设置正确的路径和端口号  
              $path =(isset($url_pieces['path']))?$url_pieces['path']:'/';  
              $port =(isset($url_pieces['port']))?$url_pieces['port']:'80';  
              //用fsockopen()尝试连接  
              if($fp =fsockopen($url_pieces['host'],$port,$errno,$errstr,30)){  
                     //建立成功后,向服务器写入数据  
                     $send = "HEAD $path HTTP/1.1\r\n";  
                     $send .= "HOST:$url_pieces['host']\r\n";  
                     $send .= "CONNECTION: CLOSE\r\n\r\n";  
                     fwrite($fp,$send);  
                     //检索HTTP状态码  
                     $data = fgets($fp,128);  
                     //关闭连接  
                     fclose($fp);  
                     //返回状态码和类信息  
                     list($response,$code) = explode(' ',$data);  
                     if(code == 200){  
                            return array($code,'good');  
                     }else{  
                            return array($code,'bad');//数组第二个元素作为css类名  
                     }  
              }else{  
                     //没有连接  
                     return array($errstr,'bad');  
              }  

       }  
       //创建URL列表  
       $urls = array(  
              'http://www.sdust.com',  
              'http://www.example.com'  
       )  
       //调整PHP脚本的时间限制:  
       set_time_limit(0);//无限长时间完成任务  
       //逐个验证url:  
       foreach($urls as $url){  
              list($code,$class) = check_url($url);  
              echo "<p><a href =\"$url\">$url</a>(<span class =\"$class\">$code</span>)</p>";  

       }  
?>

使用fsockopen()函数比fopen()函数的优点:
fopen()只会在PHP中已经将allow_url_fopen设置为真时才能使用,而fsockopen()并没有限制。

本文摘自:http://www.cnblogs.com/baocheng/p/5902560.html

标签: , ,   评论: 抢沙发 

Lumen环境Windows下Xampp环境安装Composer

当前位置:首页 » 学习
In 学习  @2016-03-22

TP框架之后想学一下Laravel“精简版”Lumen,现在配置环境,需要安装PHP依赖管理工具Composer,我本地环境是Xampp,一步一步来。

准备工作

打开PHP配置文件E:\xampp\php\php.ini确认以下模块已开启(移除前面的分号)。

extension=php_openssl.dll, 
extension=php_curl.dll, 
extension=php_sockets.dll

检查扩展路径:

extension_dir = "E:\xampp\php\ext"
browscap = "E:\xampp\php\extras\browscap.ini"

下载Windows平台下Composer的安装文件并安装:
https://getcomposer.org/Composer-Setup.exe
安装过程中需要选择你的php安装目录下的php.exe文件选择路径。
命令行运行:

composer -v

安装成功会显示:
composer安装成功

安装Lumen:

  1. 命令行下载Lumen并安装:
composer global require "laravel/lumen-installer=~1.0"
  1. 系统环境变量path添加:
C:\Users\Administrator\AppData\Roaming\Composer\vendor\bin;
  1. 创建Lumen新项目:
    进入要创建项目的目录比如E:\www
E:\www>lumen new blog

将会在E:/www目录下创建包括全部依赖包的文件夹blog
至此,安装过程结束。

标签: , , ,   评论: 1枚 

jQuery使用change事件获取select当前值并动态赋值

当前位置:首页 » 学习
In 学习  @2016-03-04

需求描述:
在文章编辑页面:
QQ截图20160304171422
当我们通过下拉菜单选择不同分类的时候,需要将该分类的值赋值给一个hidden类型的元素,在提交修改或添加的时候将这个值写入数据库标识文章的分类,由于选择的值是变化的,在不重新加载页面的情况下,完成动态赋值。

模板文件:

<form class="form-horizontal" role="form" action="{:U('Blog/adds')}" method="post">
<input type="hidden" id="ptitle" name="ptitle" value="{$_GET.title}">
<input type="hidden" name="id" value="{$_GET.id}">
    <div class="form-group">
        <label class="col-sm-3 control-label no-padding-right" for="form-field-1"> 父类目</label>
        <div class="col-sm-9">
        <!-- 栏目选择下拉框 -->
            <select class="col-xs-10 col-sm-5" name="pid" id="pid">
                <volist name="list" id="list">
                <option value="{$list.id}" <if condition="$list['id'] eq $_GET['pid']">selected="selected"</if> >{$list.title}</option>
                </volist>
            </select>
        </div>
    </div>
    <div class="clearfix form-actions">
        <div class="col-md-offset-3 col-md-9">
            <button class="btn btn-info" type="submit">
                <i class="icon-ok bigger-110"></i>
                提交
            </button>
                 
            <button class="btn" type="reset">
                <i class="icon-undo bigger-110"></i>
                重置
            </button>
        </div>
    </div>
</form>

pid发成改变的时候,获取option:selected文本给ptitle赋值

<script>
$("#pid").change(function() {   
     var ptitle = $(this).find("option:selected").text();        
     $("#ptitle").attr("value",ptitle);
})
</script>

// 20170718更新,这样来获取select的选中项的值value和文本text
//文本
$('#pid option:selected').text();
$('#pid option:selected').val();
标签: , ,   评论: 2枚