相关疑难解决方法(0)

怎么应该使用strace?

一位同事曾告诉我,当Linux上的所有内容都无法调试时,最后一个选项是使用strace.

我试图学习这个奇怪工具背后的科学,但我不是系统管理大师,我没有真正得到结果.

所以,

  • 究竟是什么,它做了什么?
  • 如何以及在何种情况下使用它?
  • 如何理解和处理输出?

简而言之,简单来说,这些东西是如何工作的?

linux debugging strace

266
推荐指数
8
解决办法
27万
查看次数

PHP:如何包含一个类

我有index.php,我想包括class.twitter.php在里面,我该怎么做?

希望当我将下面的代码放在index.php中时它会起作用.

$t = new twitter();
$t->username = 'user';
$t->password = 'password';

$data = $t->publicTimeline();
Run Code Online (Sandbox Code Playgroud)

php require include

26
推荐指数
4
解决办法
11万
查看次数

PHP中"包含"的性能成本是多少?

只是想知道是否有人有关于"成本"的信息,包括一个包含100个类文件的大型(600K或更多)php文件.与自动加载单个文件(例如在找到匹配项之前搜索多个目录)相比,它真的有很大的不同吗?

APC缓存会让这个成本微不足道吗?

php performance php-include

22
推荐指数
2
解决办法
6158
查看次数

PHP包含vs include_once(速度)

可能重复:
为什么require_once这么糟糕?

我读的地方,在include_oncerequire_once在PHP语句比其非曾经的同行慢.这是一个显着的放缓?是否有任何测试或研究,并在最近的PHP版本中进行了更改?

php

16
推荐指数
1
解决办法
4万
查看次数

PHP是否包含资源昂贵(特别是在迭代期间)?

PHP缓存include请求吗?我想知道如何清理我的代码,并考虑使用更多includes.考虑以下方案.

[foreach answer] [include answer.tpl.php] [/foreach]
Run Code Online (Sandbox Code Playgroud)

这需要包括answer.tpl.php数百次.

它缓存了吗?它会对性能有影响吗?这被认为是一种好习惯吗?坏?

回应@Aaron Murray的回答

不,那不行.仅仅_once是防止包含同一文件不止一次的概念.(以防止例如覆盖常量值导致的错误)

实际的例子如下:

# index.php
<?php
$array  = array('a', 'b', 'c');

$output = '';

foreach($array as $e)
{
    $output .= require_once 'test.php';
}

echo $output;

# test.php 
<?php
return $e;
Run Code Online (Sandbox Code Playgroud)

php loops include

14
推荐指数
2
解决办法
1088
查看次数

尝试捕获失败的包含

这是一个简单的问题,一小时的谷歌搜索似乎没有解决.你如何捕获PHP中的失败包含?对于以下代码:

try {
    include_once 'mythical_file';
} catch (Exception $e) {
    exit('Fatal');
}

echo '?';
Run Code Online (Sandbox Code Playgroud)

如果mythical_file不存在,我得到输出'?'.我知道PHP无法捕获失败,因为它触发了警告错误,但是在这里?捕获失败的包含的最佳方法是什么?例如,以下工作:

(include_once 'unicorn') or exit('!');
Run Code Online (Sandbox Code Playgroud)

但它不会触发异常,所以我无法检索文件,行和堆栈上下文.

php try-catch include

5
推荐指数
1
解决办法
8890
查看次数

Laravel PHPUnit返回404

我是Laravel新手。在Homestead中使用本地开发环境尝试运行简单测试

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

class UserTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */

    public function testBasicTest()
    {
        $response = $this->get('/');

        $response->assertStatus(200);
    }
}
Run Code Online (Sandbox Code Playgroud)

route / web.php:

Route::get('/', function () {
    return view('main');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Run Code Online (Sandbox Code Playgroud)

运行phpunit返回404错误

vagrant @ homestead:〜/ code / laravel $ phpunit Sebastian Bergmann和贡献者的PHPUnit 6.4.3。

。F。3/3(100%)

时间:1.07秒,内存:10.00MB

有1个失败:

1)Tests \ Feature \ UserTest :: testBasicTest预期状态码为200,但收到404。断言false为true失败。

/home/vagrant/code/laravel/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.php:78 /home/vagrant/code/laravel/tests/Feature/UserTest.php:25

我试图用这些方法修复它

1. Laravel phpunit总是404 updateTestCase.php

    protected $baseUrl = 'http://localhost'

change …
Run Code Online (Sandbox Code Playgroud)

phpunit laravel

5
推荐指数
4
解决办法
3723
查看次数

在php中使用'global'

我在这里学习模式,对PHP来说很新,所以我正在使用代码示例.请原谅我在这里使用'global',但我想了解php变量范围.

这是myGlobals.php:

<?php 
     global $db_server;
   // other code not shown
?>
Run Code Online (Sandbox Code Playgroud)

这是connectToDb.php:

<?php
      require_once 'myGlobals.php';

      // no declared functions in this file, all inline code
      $db_server = mysql_connect(.....);
      mysql_select_db( "theDatabase", $db_server);
?>
Run Code Online (Sandbox Code Playgroud)

这是addDbRecords.php:

<?php
       require_once 'myGlobals.php';

       // other inline code.....
       doAddDeleteRecord($db_server);

function doAddDeleteRecord($db_server)
{
  //global $db_server;

  if( !mysql_query($query, $db_server))
   {
         // handle the error...
   }
 }
?>
Run Code Online (Sandbox Code Playgroud)

这是index.php:

<?php
      require_once 'myGlobals.php';
      require_once 'connectToDb.php';
      require_once 'addDbRecords.php';

     // this is simplified, just trying to show that everything in inline code
 ?>
Run Code Online (Sandbox Code Playgroud)

这是问题所在.当我 …

php global scoping

4
推荐指数
1
解决办法
464
查看次数

为什么人们说require_once慢于require?

可能重复:
为什么require_once这么糟糕?

当PHP包含文件时,我假设它将文件名存储在数组中.

然后,当包含另一个文件时,它会检查该数组是否已经包含它,对吧?

那么这里最重要的是什么?为什么人们如此害怕这个阵列检查?这不像是你包含了数百万个文件......

in_array检查是一直进行的.我几乎在所有功能中使用它们:)

php arrays require require-once

4
推荐指数
1
解决办法
4132
查看次数

在 preg_replace() 之前使用 strpos() 是否更快?

假设我们preg_replace在数百万个帖子字符串上使用它:

function makeClickableLinks($s) {
    return preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$1</a>', $s);
}
Run Code Online (Sandbox Code Playgroud)

假设所有帖子中只有 10% 包含链接,strpos($string, 'http') !== false在调用之前检查会更快preg_replace()吗?如果是这样,为什么?不在preg_replace()内部执行一些预测试?

php regex preg-replace strpos

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

使用include时PHP类路径冲突

我有一个包括类的问题.这是一个解释问题的简单示例:

班级号 1(路径:/home/day/Class_A.php):

class Class_A {
  public function sayHi() {
    echo "Good day";
  }
}
Run Code Online (Sandbox Code Playgroud)

班级号 2(路径:/home/test/Class_B.php):

class Class_B {
  public function greeting() {
    if(class_exists("Class_A")!=true)
      include "../day/Class_A.php";
    $test = new Class_A();
    $test->sayHi();
  }
}
Run Code Online (Sandbox Code Playgroud)

PHP文件(路径:/home/php.php)

if(class_exists("Class_B")!=true)
  include "test/Class_B.php";
  $g = new Class_B;
  $g->greeting();
Run Code Online (Sandbox Code Playgroud)

问题是当php.php包含Class_B且Class_B包含Class_A时,Class_B无法打开Class_B,因为类的对象的路径现在与php.php文件相同.

我的问题是:有没有一种简单的方法来解决这个问题?

php class path include

0
推荐指数
1
解决办法
1904
查看次数