25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

163 lines
5.8 KiB

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Steven
  5. * Date: 2016/10/8
  6. * Time: 17:01
  7. *
  8. * Class utils 公共工具类
  9. */
  10. namespace common\models;
  11. class Utils
  12. {
  13. /**
  14. *创建日记类
  15. * @param $log log内容
  16. */
  17. /* static function writeLog($log)
  18. {
  19. $dir = __DIR__ . "/../Log/";
  20. if (!is_dir($dir)) {
  21. mkdir($dir);
  22. }
  23. $filename = $dir . date("Y-m-d") . ".log";
  24. file_put_contents($filename, date("Y-m-d H:i:s") . "\t" . $log . PHP_EOL, FILE_APPEND);
  25. }*/
  26. static function httpRequest($url, $data = null)
  27. {
  28. $ch = curl_init();
  29. curl_setopt($ch, CURLOPT_URL, $url);
  30. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  31. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  32. if (!empty($data)) {
  33. curl_setopt($ch, CURLOPT_POST, 1);
  34. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  35. }
  36. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  37. $output = curl_exec($ch);
  38. file_put_contents(__DIR__ . '/../log/curl_log/' . date("Y-m-d") . '.log', date("Y-m-d H:i:s") . $url . PHP_EOL . $output . PHP_EOL, FILE_APPEND);
  39. curl_close($ch);
  40. return $output;
  41. }
  42. /**
  43. * Des:异步请求
  44. * Name: httpRequestForasyn
  45. * @param $url
  46. * @param null $data
  47. * @author 倪宗锋
  48. */
  49. static function httpRequestForasyn($url, $data = null)
  50. {
  51. $ch = curl_init();
  52. curl_setopt($ch, CURLOPT_URL, $url);
  53. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  54. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  55. if (!empty($data)) {
  56. curl_setopt($ch, CURLOPT_POST, 1);
  57. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  58. }
  59. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  60. curl_setopt($ch, CURLOPT_TIMEOUT,1);
  61. curl_exec($ch);
  62. curl_close($ch);
  63. }
  64. /**
  65. * 发送HTTP请求
  66. * @param $url
  67. * @param array $param
  68. * @return mixed
  69. * @throws Exception
  70. */
  71. static function httpsPost($url, $param = array())
  72. {
  73. $ch = curl_init(); // 初始化一个 cURL 对象
  74. curl_setopt($ch, CURLOPT_URL, $url); // 设置需要抓取的URL
  75. curl_setopt($ch, CURLOPT_HEADER, 0); // // 设置header
  76. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
  77. // 如果你想PHP去做一个正规的HTTP POST,设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。
  78. curl_setopt($ch, CURLOPT_POST, 1);
  79. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param)); // 传递一个作为HTTP “POST”操作的所有数据的字符串。//http_build_query:生成 URL-encode 之后的请求字符串
  80. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  81. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  82. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  83. 'Content-type:application/x-www-form-urlencoded;charset=utf-8'
  84. ));
  85. $rtn = curl_exec($ch); // 运行cURL,请求网页
  86. if ($errno = curl_errno($ch)) {
  87. throw new Exception ('Curl Error(' . $errno . '):' . curl_error($ch));
  88. }
  89. curl_close($ch); // 关闭URL请求
  90. return $rtn; // 返回获取的数据
  91. }
  92. /**
  93. * User: wangxj
  94. *
  95. * GridView 计算平均值;如果是“-”返回“-”,不返回0,
  96. *
  97. * @data array
  98. *
  99. * @return string
  100. */
  101. static function gridSummary($data)
  102. {
  103. if ($data[0] == '-') {
  104. return '-';
  105. }
  106. return count($data) > 0 ? array_sum($data) / count($data) : null;
  107. }
  108. /**
  109. * User: wangxj
  110. *
  111. * 获取离00:00的分钟数
  112. *
  113. * @param $time
  114. *
  115. * @return integer
  116. */
  117. static function getMinutes($time)
  118. {
  119. $minutes = 0;
  120. $arr = explode(':', $time);
  121. $minutes += $arr[0] * 60;
  122. $minutes += $arr[1];
  123. return $minutes;
  124. }
  125. /**
  126. * Function Description:发送http请求
  127. * Function Name: httpRequestForYii
  128. * @param $url
  129. * @param null $data
  130. * @param $cookie
  131. *
  132. * @return mixed
  133. *
  134. * @author 冒炎
  135. */
  136. public function httpRequestForYii($url,$data=null,$cookie) {
  137. $ch=curl_init();
  138. curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  139. curl_setopt($ch, CURLOPT_URL, $url);
  140. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  141. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  142. if (!empty($data)){
  143. curl_setopt($ch, CURLOPT_POST, 1);
  144. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  145. }
  146. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  147. $output=curl_exec($ch);
  148. curl_close($ch);
  149. return $output;
  150. }
  151. }