小左闲谈

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

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

Socket可以理解为两台计算机相互通信的通道。
用法:使用fsockopen()函数
具体用法详见上篇文章。函数的参数为URL、端口号、一个存放错误编号的变量、一个存放错误信息字符串的变量和超时等待时间。(只有第一个参数是必须的)
常见的端口:
端口:21(FTP),22(SSH),23(Telnet),25(SMTP),80(Web),110(POP)。
其中,组成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

【示例】

  1. <?PHP  
  2.        function check_url($url){  
  3.               //解析url  
  4.               $url_pieces = parse_url($url);  
  5.               //设置正确的路径和端口号  
  6.               $path =(isset($url_pieces['path']))?$url_pieces['path']:'/';  
  7.               $port =(isset($url_pieces['port']))?$url_pieces['port']:'80';  
  8.               //用fsockopen()尝试连接  
  9.               if($fp =fsockopen($url_pieces['host'],$port,$errno,$errstr,30)){  
  10.                      //建立成功后,向服务器写入数据  
  11.                      $send = "HEAD $path HTTP/1.1\r\n";  
  12.                      $send .= "HOST:$url_pieces['host']\r\n";  
  13.                      $send .= "CONNECTION: CLOSE\r\n\r\n";  
  14.                      fwrite($fp,$send);  
  15.                      //检索HTTP状态码  
  16.                      $data = fgets($fp,128);  
  17.                      //关闭连接  
  18.                      fclose($fp);  
  19.                      //返回状态码和类信息  
  20.                      list($response,$code) = explode(' ',$data);  
  21.                      if(code == 200){  
  22.                             return array($code,'good');  
  23.                      }else{  
  24.                             return array($code,'bad');//数组第二个元素作为css类名  
  25.                      }  
  26.               }else{  
  27.                      //没有连接  
  28.                      return array($errstr,'bad');  
  29.               }  
  30.  
  31.        }  
  32.        //创建URL列表  
  33.        $urls = array(  
  34.               'http://www.sdust.com',  
  35.               'http://www.example.com'  
  36.        )  
  37.        //调整PHP脚本的时间限制:  
  38.        set_time_limit(0);//无限长时间完成任务  
  39.        //逐个验证url:  
  40.        foreach($urls as $url){  
  41.               list($code,$class) = check_url($url);  
  42.               echo "<p><a href =\"$url\">$url</a>(<span class =\"$class\">$code</span>)</p>";  
  43.  
  44.        }  
  45. ?>

使用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,一步一步来。
准备工作
1.打开PHP配置文件E:\xampp\php\php.ini确认以下模块已开启(移除前面的分号)。

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

2.检查扩展路径:

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

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

composer -v

安装成功会显示:
composer安装成功
4.安装Lumen:
4.1.命令行下载Lumen并安装:

composer global require "laravel/lumen-installer=~1.0"

4.2.系统环境变量path添加:

C:\Users\Administrator\AppData\Roaming\Composer\vendor\bin;

4.3.创建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>
			&nbsp; &nbsp; &nbsp;
			<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枚