小编tra*_*nte的帖子

很长时间到空php文件的第一个字节值

几个月前我有这样的问题.现在为了隔离问题,我尝试了一种新的方法.我把一个空文件放到我的服务器上.

文件名是"foobar.php".其内容如下:

<?php
echo "hello world";
Run Code Online (Sandbox Code Playgroud)

但是当我尝试进入example.com/foobar.php时,我明白了

DNS 203毫秒
连接3.33秒
发送0毫秒
到第一个字节的时间17.35秒
接收1毫秒总加载时间20.88秒

然后我把另一个名为"foobar.txt"的文件.其内容如下:

hello world<br/>
Run Code Online (Sandbox Code Playgroud)

foob​​ar.txt的加载时间约为0.2秒.

这个网站是在共享主机内,所以我无法获得root Linux访问权限.我试图找出是什么让我的网站变慢.

  • 当我得到这些结果时,我的网站有60个访问者.并且它们在活动时发送AJAX请求.当它们处于活动状态时,它们几乎每3秒发送一次AJAX请求.
  • 一般来说,我的网站每秒有5-20个请求.
  • 我的托管服务提供商表示没有CPU过载,一般来说非常低.
  • 我向托管公司询问了Apache的限制.我得到整个共享服务器的这个值:

MaxClients 300
MaxRequestsPerChild 4000
ThreadsPerChild 25

  • example.com/mybigpage.phpexample.com/foobar.php页面几乎同时打开.
  • 如果页面有txt,jpeg或其他扩展名,则会立即打开它们.如果扩展名为php,则打开速度非常慢.
  • CakePHP将会话文件存储在"/ httpdocs/app/tmp/sessions"文件夹中.会话文件在创建两个小时后删除.现在该文件夹中有3653个文件.最早的文件是在2,5小时前创建的.
  • 在我的配置中,PHP处理程序是Apache模块mod_php

新编辑: 我和我的托管公司谈过.并告诉他们"foobar.php"几乎在20秒内打开.虽然该文件根本没有代码.他们告诉我他们把"foobar.php"放到我们使用同一台服务器的其他网站上.我也试过"othersite.com/foobar.php".它立刻打开了.但"mysite.com/foobar.php"几乎在15秒内开启.什么会造成这种行为?我们对其他网站使用相同的PHP配置,但它们会立即打开..可以是因为我的.htaccess规则吗?还是其他的事情?

新Edit2: 我的提供商告诉我服务器内没有"apd.so"文件.所以我好像不能使用APD.

我应该寻找什么才能找到瓶颈?
什么会限制我的网站?


附加数据:来自phpinfo,我得到了这个:

'./configure'' - prefix =/usr/local/lsws/lsphp5'' - build = x86_64-redhat-linux-gnu'' - host = x86_64-redhat-linux-gnu'' - target = x86_64-redhat-linux-gnu'' - sysconfdir =/etc'' - datadir =/usr/share'' - includenid =/usr/include'' - libdir =/usr/lib64'' - libdcdir =/usr/libexec'' …

php apache .htaccess cakephp mod-php

18
推荐指数
1
解决办法
9134
查看次数

重载服务器的HTTP状态代码

几个小时我的网站服务器负载太大.
我应该将哪个HTTP状态代码发送到访问我网站的Googlebot?

" 269 Call Back Later "是否适用于此案例,或者503服务不可用或您还有其他建议吗?

seo googlebot http http-status-codes http-status-code-503

16
推荐指数
2
解决办法
7103
查看次数

Cakephp 3转换cakephp 2饼干

我们需要在Cakephp 3中阅读Cakephp 2用户cookie.但似乎在更新期间,CakeCookie标签已从cookie中删除.所以每个Cakephp cookie都是分开的.关于这里,Cakephp 3可以读取旧的cookie,如果它们是用AES编写的.但在旧的cakephp中,默认选项是密码,我们的cookie是用密码编写的.所以我们现在不能读旧饼干.

可以选择在Cakephp 2中读取旧cookie并使用AES更新它们.但是当我们更新到Cakephp 3时,会有用户拥有Cakephp 2 cookie.所以我们需要在Cakephp 3中查看这个.

我们计划在cakephp 3中使用密码读取旧cookie,并将其值写入新cookie.我们使用了安全密码方法的代码,并创建了以下代码.

问题是,这段代码适用于字符串,但它在一些嵌套数组上失败了.问题可能是加号或任何其他编码问题.有时候它有效,有时则不然.

我分享了我们的代码来展示我们的流程.您可以提出另一种转换旧cookie的方法.

if (isset($_COOKIE['CakeCookie'])) {
    if (is_array($_COOKIE['CakeCookie'])) {
        foreach ($_COOKIE['CakeCookie'] as $key => $value) {
            $valueDecr=$this->decryptSaltedData($value);
            $this->Cookie->configKey($key, ['expires' => '+60 days']);
            $this->Cookie->write($key, $valueDecr);

            $this->Cookie->delete("CakeCookie[$key]");
            unset($_COOKIE['CakeCookie'][$key]);
            setcookie("CakeCookie[$key]", "aaa", time()-3600, '/');
            setcookie("CakeCookie[$key]", "aaa", time()-3600, '/', '.example.com');
        }
    }
}

public function decryptSaltedData($data) {
    $data2 = substr($data, 8);
    $text = base64_decode($data2);
    $key = Security::salt();

    $cipherSeed='45454545454545454545';
    srand($cipherSeed);

    $out = '';
    $keyLength = strlen($key);
    for ($i = 0, …
Run Code Online (Sandbox Code Playgroud)

php cookies cakephp cakephp-3.0

16
推荐指数
0
解决办法
416
查看次数

HardwareRenderer createSurface上的IllegalStateException

在我的崩溃日志中,我看到以下错误:

java.lang.IllegalStateException eglMakeCurrent failed EGL_BAD_ALLOC  android.view.HardwareRenderer GlRenderer.createSurface HardwareRenderer.java
       at android.view.HardwareRenderer$GlRenderer.invalidate(HardwareRenderer.java:1328)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1921)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1234)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6467)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
       at android.view.Choreographer.doCallbacks(Choreographer.java:603)
       at android.view.Choreographer.doFrame(Choreographer.java:573)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789)
       at android.os.Handler.handleCallback(Handler.java:733)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:157)
       at android.app.ActivityThread.main(ActivityThread.java:5356)
       at java.lang.reflect.Method.invokeNative(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:515)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
       at dalvik.system.NativeStart.main(NativeStart.java)
Run Code Online (Sandbox Code Playgroud)

https://github.com/android/platform_frameworks_base/blob/android-4.4_r1.2/core/java/android/view/HardwareRenderer.java#L1328

我得到GT I9500 - Android 4.4.2用户的这次崩溃.原因是什么以及如何隔离问题?

(类似:在活动之间通过意图传递变量的问题 eglSwapBuffers失败:EGL_BAD_ALLOC AndEngine Android)

android

14
推荐指数
1
解决办法
5567
查看次数

与AJAX的Adsense

我读到了这个,这个这个,但我认为我的情况有所不同.每次进行AJAX调用时,我都不需要刷新广告.

我有一个页面叫它"mypage.php".当页面打开时,我将Adsense广告加载到第一个div中.我的第二个空是空的.

在DOM完全加载后,我做了一个AJAX帖子.并将结果放入"lower_content"div中.这会破坏Adsense TOS吗?

<body>
  <div id="adSense_content>
    <script> adsense script </script>
  </div>

  <div id="lower_content">
    empty in start
  </div>
</body>
Run Code Online (Sandbox Code Playgroud)

我的js文件:

$(document).ready(function() {
  $.ajax({
    type: "POST",
    url: "/getit",
    success: function(data) {
            $("#lower_content").html(data);
        }
  });
}
Run Code Online (Sandbox Code Playgroud)

注意:为什么我在页面打开时不加载第二个内容?因为AJAX在6-7秒内回复.当服务器负载很高时,甚至会在10-15秒内响应.不要让访问者等待空白页面,甚至从页面反弹.我在开始时向访客显示布局,并在AJAX呼叫的响应到来时加载内容.

编辑:将广告投放到空白页面是Adsense TOS.但是我加载表格数据时提到的页面是空的.使用AJAX加载完整表后,页面将加载内容.但广告是在加载html页面时放置的.

ajax jquery ads adsense

13
推荐指数
2
解决办法
2万
查看次数

在 Chrome 浏览器窗口之间切换

我想为StrokesPlus创建一个可以在 Google Chrome 窗口之间切换的手势。当然用Alt+Tab切换是可以的,但是我不想看到其他正在运行的程序。

似乎在 Mac OS 中存在 cmd + 反引号快捷方式。但是我找不到 Windows 等效的切换快捷方式。

google-chrome gestures windows-7

13
推荐指数
5
解决办法
3万
查看次数

如何在Twitter的Popover中使用"div"和多个按钮?

这个解决方案适用于一个按钮的情况:是否可以使用div作为Twitter的Popover的内容

但在我的页面中,我有一堆弹出窗口(比如说50-100).
所以我需要修改这个解决方案.

这是wa @jävi的解决方案:

$(document).ready(function(){
  $('.danger').popover({ 
    html : true,
    content: function() {
      return $('#popover_content_wrapper').html();
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

我的每个按钮都有自己的ID.

<a class='danger' data-placement='above' title="Popover Title" href='#'>Click</a>
<div id="popover_div1" style="display: none">
  <div>This is your div content</div>
</div>

<a class='danger' data-placement='above' title="Popover Title" href='#'>Click</a>
<div id="popover_div2" style="display: none">
  <div>This is your div content</div>
</div>
Run Code Online (Sandbox Code Playgroud)

那么如何重写这个javascript代码片段来覆盖我的所有按钮呢?

html javascript jquery popover twitter-bootstrap

12
推荐指数
2
解决办法
9035
查看次数

将str_word_count用于UTF8文本

我有这个文字:

$text  = "Ba?ka, küskün otomobil kaçt? buraya küskün otomobil neden kaçt?
          kaçt? buraya, oraya KISMEN @here #there J.J.Johanson hep.
          Danny:Where is mom? I don't know! Café est weiß for 2 €uros.
          My 2nd nickname is mike18.";
Run Code Online (Sandbox Code Playgroud)

最近我用这个.

$a1= array_count_values(str_word_count($text, 1, 'ÇçÖö???I???Üü@#é߀1234567890'));
arsort($a1);
Run Code Online (Sandbox Code Playgroud)

您可以查看这个小提琴:http:
//ideone.com/oVUGYa

但是这个解决方案并不能解决所有UTF8问题.我不能将整个UTF8集写入str_word_count作为参数.

所以我创造了这个:

$wordsArray = explode(" ",$text);
foreach ($wordsArray as $k => $w) {
    $wordsArray[$k] = str_replace(array(",","."),"",$w);
}
$wordsArray2 = array_count_values($wordsArray);
arsort($wordsArray2);
Run Code Online (Sandbox Code Playgroud)

输出应该是这样的:

Array (
 [kaçt?] => 3
 [küskün] => 2
 [buraya] …
Run Code Online (Sandbox Code Playgroud)

php utf-8 text-manipulation

12
推荐指数
2
解决办法
3572
查看次数

CakePHP 3手动安装

目前我使用CakePHP 2.6.8.我想迁移到CakePHP 3. Intallation指南建议使用Composer.但是作曲家没有完成所有工作,文档也不清楚.所以我需要一步一步的指导.

当前输入是2.x目录结构:https:
//github.com/cakephp/cakephp/tree/2.6.8

基本上应该为版本3更改哪些文件和文件夹?
例如这里和这里的lib/Cake文件.我们如何加入他们? https://github.com/cakephp/cakephp/tree/3.0.3
https://github.com/cakephp/app/tree/3.0.3

cakephp/upgrade工具使大多数命名空间工作并更改已弃用的类和方法.但它没有将适当的文件夹放到新位置.这里有一个文件夹结构,但目前还不清楚lib/Cake和app文件夹在哪里.例如,旧的lib/Cake文件夹移动到Vendors/cakephp文件夹.

请在迁移指南升级工具中包含文件和文件夹更改的其他步骤.

应记录所有安装过程.Composer可用于转换旧控制器,视图等文件.但是你知道,升级工具没有做出所有必要的步骤.(例如https://github.com/cakephp/upgrade/issues/83)用户应手动更改某些文件夹结构)

php cakephp composer-php cakephp-3.0

12
推荐指数
1
解决办法
1224
查看次数

Cakephp 3在父类的beforeFilter中重定向

在我们的CakePHP 3应用程序中,我们发现了不同的行为.我们确信它在CakePHP 2中运行良好,所以我想在新版本中有些变化.

当用户访问此url:时/b2controller/myMethod,这些方法运行:

AppController::beforeFilter()  
BController::beforeFilter()  
B2Controller::beforeFilter()  
B2Controller::myMethod()  
B2Controller::myMethod2()    
Run Code Online (Sandbox Code Playgroud)

然后用户被重定向到此URL /ccontroller/myMethod10/

但我们需要这个:

当用户访问 /b2controller/myMethod$isOk条件true,然后重定向用户/ccontroller/myMethod10/,而不运行BController::beforeFilter(),B2Controller::beforeFilter(),B2Controller::myMethod()BController::MyMethod2().

我们的最小代码是这样的:

class AppController {
  function beforeFilter(Event $event) {
        // set $isOk variable
        if ($isOk == TRUE) {
           return $this->redirect('/ccontroller/myMethod10/');
        }
        $aa=1;
        $ab=2;
  }
}

class BController extends AppController {
  function beforeFilter(Event $event) {
    parent::beforeFilter($event);

    $a=1;
    $b=2;
  }

  function myOtherMethod() {
      myOtherMethod2();
  }

  function myOtherMethod2() {
      ...
      ...
  }
} …
Run Code Online (Sandbox Code Playgroud)

php redirect cakephp url-redirection cakephp-3.0

12
推荐指数
1
解决办法
4169
查看次数