Press "Enter" to skip to content

1,428 Comments

  1. 周雨婷
    周雨婷 2019-09-19

    最近我们有个项目,需要生成一个在固定范围内游走的K线图,然后我们经理使用Python加上随机游走算法能解决这个问题,想请问PHP有没有相关方面的知识呢?

    • aaa
      aaa 2019-09-20

      共产党

  2. lnto
    lnto 2019-08-30

    PHP调用webservice, 无视/etc/hosts修改,这是什么情况 ?
    gethostbynamel函数也是一样的。

  3. nan shire
    nan shire 2019-08-30

    最近我看到一个东西,叫做php文件锁的,按照说法,是高并发并且有事务的情况下,为了缓解mysql端的压力,因为事务会让mysql端有很多等待的语句要处理,所以用在php这边弄一个文件锁,请求的时候锁住,结束开锁,其中也会继续用事务,但是保证了mysql端不会有那么多事务的请求。但是这会消耗php服务器很多效率不是吗,这种做法是否可取,所以在这里问问您,想知道鸟叔您的看法。

  4. ming
    ming 2019-08-23

    我遇到一个比较诡异的问题,想向你请教一下
    我有一个php服务一直比较稳定,最近遇到php某几个进程刚接到请求,缓冲区就有“5555”内容,重启php就没问题了,过一段时间又出现,我在index.php第二行输出ob_get_contents(),就有这个内容,后来我使用ob_clean()解决了
    之后有php进程好像没有处理php逻辑就直接返回给nginx
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:07 +0800] “GET /test.php HTTP/1.1” 200 2.001 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:12 +0800] “GET /test.php HTTP/1.1” 200 2.001 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:20 +0800] “GET /test.php HTTP/1.1” 200 2.001 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:24 +0800] “GET /test.php HTTP/1.1” 200 2.002 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:25 +0800] “GET /test.php HTTP/1.1” 200 0.000 31 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:33 +0800] “GET /test.php HTTP/1.1” 200 2.001 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    注意第五个请求
    我在test.php内部有sleep,但是有的请求直接0.000时间就返回nginx,而且没有输出内容
    test.php代码
    <?php
    sleep(1);
    $status = ob_get_status(true);
    $pid = posix_getpid();
    $line = __LINE__;

    file_put_contents('/data/var/log/game-log/ob.txt', date('Y-m-d H:i:s') . " [$pid][$line]: " .var_export($status, true) . PHP_EOL, FILE_APPEND);

    sleep(1);
    echo "123" . PHP_EOL;

    echo 'abc' . PHP_EOL;
    $string = ob_get_contents();
    if( !empty($string) )
    {
    $pid = posix_getpid();
    $line = __LINE__;
    file_put_contents('/data/var/log/game-log/ob.txt', date('Y-m-d H:i:s') . " [$pid][$line]: " .$string . PHP_EOL, FILE_APPEND);
    }
    //ob_flush();
    //flush();
    ob_end_flush();

    nginx 1.8.0
    php 7.0.16
    php升级到7.0.33也没有解决

  5. yangknkp
    yangknkp 2019-08-21

    spl_autoload_register 的第二个参数,是否抛出异常有为什么是无效的

    • yangknkp
      yangknkp 2019-08-21

      function loady($className)
      {
      echo “运行 loady\n”;
      $fileName = ‘libs’ . DIRECTORY_SEPARATOR . $className;
      if (file_exists($fileName)) {
      require_once $fileName;
      return true;
      } else {
      echo “loady 失败”;
      return false;
      }
      }

      function loadx($className)
      {
      echo “运行 loadx\n”;
      $fileName = ‘libs’ . DIRECTORY_SEPARATOR . ‘tests’ . DIRECTORY_SEPARATOR . $className;
      if (file_exists($fileName)) {
      require_once $fileName;
      return true;
      } else {
      echo “loadx 失败”;
      return false;
      }
      }

      spl_autoload_register(‘loady’,true);
      spl_autoload_register(‘loadx’,true);

      try {
      new A();
      new B();
      new TestA();
      } catch (\Exception $e) {
      print_r($e->getMessage());
      }

  6. wuliping
    wuliping 2019-08-15

    大神,我有一个想法。我认为PHP是非常不错的语言,业务代码用PHP脚本编写方便快速调整迭代,常用工具可以封装为扩展用c语言实现以提升性能。但是就有一个问题,我最近在学习如何编写PHP扩展并使用,感觉过程还是过于繁杂(可能是因为还没入门吧。。),不过如果可以简化这个流程就好了。

  7. Sean
    Sean 2019-08-12

    老哥你好,我是字节跳动的猎头Sean,这边有字节全线业务的招聘,不知道您目前有没有在看新的机会呢,十分期待您能回复我的消息,希望能和您进一步沟通[可怜][可怜]

    • Sean.bao
      Sean.bao 2019-09-17

      你想招鸟哥?

  8. 陈生
    陈生 2019-07-19

    世界那么大,我想来看看haokan112.com

  9. 留芳网
    留芳网 2019-07-13

    看来是大神无疑了。漏洞名称

    Redis 基线合规检测
    这个漏洞如何修复啊。

  10. 啊啊
    啊啊 2019-07-05

    这zend opcache 生成的bin文件有着源码保护的用处,我想知道这种字节码是否可以还原PHP代码,等待你的回复。谢谢

  11. Daniel Cheung
    Daniel Cheung 2019-07-02

    鸟哥,您好,请教一个问题:
    今天做python3的AES采用 ECB 模式,加密key使用16位key,发现加密出来的数据二进制流和直接使用php7中的 openssl_encrypt 加密出来的二进制流最后16个字节不一样,python3采用的是用0x00进行长度补齐,openssl_encrypt 使用的是 OPENSSL_RAW_DATA 方式,不知道 openssl_encrypt 是如何补码的?是否是由于补码方式不一样导致的加密结果最后16个字节不一样。
    谢谢!

  12. 1
    1 2019-06-28

    zend opcache 的字节码能被反编译吗?

  13. Fireworks
    Fireworks 2019-06-20

    鸟哥,请问你首页的文章截断是怎么做的?我做了一个截断html字符串的,然后我再去补全html标签,但是这样会遇到一个尴尬的问题,例如 URL 地址,或者其他需要完整的字就会断掉。

    • yangfan
      yangfan 2019-06-25

      你可以试试 mb_substr 可能会有惊喜等着你 mb_ 函数系列

      • Fireworks
        Fireworks 2019-07-01

        谢谢 我去试一下

  14. FrPHP-风
    FrPHP-风 2019-06-04

    您好,久仰大名。我遇到问题了,抱歉,可能会占用您的宝贵时间,但我实在经过多次探索未能解决这个问题,困扰我好久了。
    我是php程序员,最近开发一个项目,发现同一个系统,访问不同页面会出现两个session_id,我翻遍了文档,并没有找到解决方案。下面我说下具体出现的原因:
    项目要实现用户在浏览器打开情况下,就一直保持登录,除非关闭浏览器。
    我想通过不断刷新session来保持session一直正常访问。
    1、我在主框架控制器入口写了函数如下:
    function start_session($expire = 0) {
    if ($expire == 0) {
    $expire = ini_get(‘session.gc_maxlifetime’);
    } else {

    ini_set(‘session.gc_maxlifetime’, $expire);
    }
    $session_cache_dir = APP_PATH.’cache/tmp’;//本地可查看session记录
    if(!file_exists($session_cache_dir)){
    mkdir($session_cache_dir,0777,true);
    }
    ini_set(‘session.save_path’,$session_cache_dir);
    ini_set(“session.cookie_httponly”, 1);

    if (!isset($_COOKIE[‘PHPSESSID’])) {
    session_set_cookie_params($expire);
    session_start();
    } else {
    session_start();
    setcookie(session_name(), session_id(), time() + $expire);
    }

    }
    每次访问都执行一遍:start_session(60);
    2、首次进入页面登录,我保存用户信息用$_SESSION[‘member’],此时出现一个session_id
    cache/tmp能够查看到一个session
    这一套流程下来都没什么问题,访问各个页面都只有一个session,没有任何问题
    3、我在当前页面控制器里写入一个函数:
    //更新session的过期时间
    function update_session_maxlifetime(){

    $cache_time = $cache_time==0 ? 600 : $cache_time;
    setcookie(session_name(), session_id(), time() + $cache_time);
    JsonReturn(session_id().’-‘.$_COOKIE[session_name()].’更新session成功!’);
    }
    //我用ajax每隔几秒访问这个函数,以希望保持session是最新的
    4、这个方法确实能让当前页面不会掉session,但是当我点击当前页面其他栏目链接的时候,会提示重新登录,而且session_id不同,我刷新当前页面也不会提示登录,F12/查看cookie发现PHPSESSID同时存在两个!本地tmp中能看出来,一个session_id的记录是空的,而当前页面的session_id是有数据的!
    5、我做过如下猜测和尝试:
    设置ini_set(‘session.gc_maxlifetime’, 86400);//一天
    本地cookie session_set_cookie_params(60);//60秒
    我觉得应该是服务器先过期,导致cookie未过期,实际上session_id过期了。
    但,并不是,上面问题依旧存在。

    写的内容有点多,希望您能帮我解决一下,非常感谢!

    • ius
      ius 2019-08-10

      你这个好像进不去哦,还是说只有大屏首页

  15. 聚网志成
    聚网志成 2019-05-15

    我看了不少网站,博主的网站写的不错,收藏了哈,经常来看,有空我们一起做个友qing链jie呗,我的是:www.jw61.com 深圳网站建设,等着你哦。

  16. 小夏阿姨
    小夏阿姨 2019-04-23

    想请教鸟哥一个关于yaf的问题
    打算基于swoole+yaf实现一个api应用,用rsa对所传输数据进行加密并以raw发送给服务端,服务端取出请求中的raw后尝试对其解密及验签等操作,当解密及验签不成功时,直接响应错误给客户端。
    方案有三:
    1 在Yaf\Plugin_Abstract::dispatchLoopStartup 前某个时刻进行解密验签
    2 controller 继承 Yaf\Controller_Abstract,在init方法中进行解密验签
    3 在入口中 application::run 之前 进行解密验签

    如果用第3个方案就用不了yaf提供的response来达到所有响应统一由一个地方执行了,所以放弃此方案

    如果是前两个方案,问题来了,swoole是禁止在程序中用exit 或 die之类退出的,我们需要怎么跳过controller中的流程而直接响应错误。

    除了上面3种方案是否还有别的方案

    • test
      test 2019-04-24

      config:
      application.dispatcher.throwException=1
      application.dispatcher.catchException = 1

      then thron Yaf\Exception where you want to response app error
      yaf will catch it by ErrorController::errorAction

    • test
      test 2019-04-24

      config:
      application.dispatcher.throwException=1
      application.dispatcher.catchException = 1

      then throw Yaf\Exception where you want to response app error
      yaf will catch it by ErrorController::errorAction

  17. lucky
    lucky 2019-04-19

    不知道你发现没,在php.ini里设置session.cookie_httponly = On 不管在PHP哪一个版本,都是不生效的,设置重启之后,在浏览器里document.cookie一样可以获取到cookie的值.这算不算是一个bug呢?

    • gao
      gao 2019-05-05

      那是js获取 php管不了大哥

      • rory
        rory 2019-07-08

        那这个有设定是什么作用

Leave a Reply to hLrVbph4PaDjMWf Cancel reply

Your email address will not be published. Required fields are marked *