小编Pav*_*rba的帖子

使容器只能从localhost访问

我在Debian Jessie上安装了Docker引擎,我在那里运行带有nginx的容器.我的"运行"命令如下所示:

docker run -p 1234:80 -d -v /var/www/:/usr/share/nginx/html nginx:1.9
Run Code Online (Sandbox Code Playgroud)

它工作正常,问题是现在可以访问此容器的内容http://{server_ip}:1234.我想在这台服务器上运行多个容器(域),所以我想为它们设置反向代理.

如何确保容器只能通过反向代理访问,而不是直接从IP:port?例如.:

http://{server_ip}:1234  # not found, connection refused, etc...
http://localhost:1234  # works fine
Run Code Online (Sandbox Code Playgroud)

//编辑:只是要清楚 - 我不是在问如何设置反向代理,而是如何运行Docker容器只能从localhost访问.

portforwarding docker

20
推荐指数
2
解决办法
9088
查看次数

减少数组和SplFixedArray的内存使用量

我在array()和之间做了一些基准测试SplFixedArray(),我遇到了奇怪的行为.首先,看看我的简单测试(它实际上只是来自互联网的编辑版本,抱歉,我现在找不到原始资源):

function formatMemoryUsage($usage) {
   $unit = array(' B', 'kB', 'MB', 'GB', 'TB');
   $factor = floor((strlen($usage) - 1) / 3);

   return sprintf('%.2f %s (%d bytes) ', $usage / pow(1024, $factor), $unit[$factor], $usage);
}

for($size = 1000; $size < 100000; $size *= 2) { 
   echo PHP_EOL . '> Testing size: ' . number_format($size) . PHP_EOL; 
   echo '   Array()' . PHP_EOL;

   for($s = microtime(true), $m = memory_get_usage(true), $container = Array(), $i = 0; $i < $size; $i++) $container[$i] = …
Run Code Online (Sandbox Code Playgroud)

php arrays memory-management

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

在父类中获取子实例

有没有办法如何在PHP中确定父类中的子实例?假设我们有这个代码:

class Parent {
    public function InstanceOfChild() {
        //What to put here to display "Child class is instance of ChildClass123"?
    }
}

class ChildClass123 extends Parent {
   //Some code here
}
Run Code Online (Sandbox Code Playgroud)

我需要做的是(如果可能的话)是create方法InstanceOfChild(),它会告诉我子类的实例,因为很多类可以是我父类的子类,但我想(让我们说)log,哪个子调用哪个方法.感谢帮助!

php oop parent-child

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

使用Nginx设置常量SERVER_NAME

我有以下结构的nginx.conf

http {
    [ ... ]

    server {
        [ ... ]

        location ~ \.php$ {
            fastcgi_pass  unix:/run/php/php7.0-fpm.sock;
            fastcgi_split_path_info  ^(.+\.php)(/.*)$;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param  SERVER_NAME $host;
            fastcgi_read_timeout  3000;
            include  fastcgi_params;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该nginx在Docker内部运行,因此不知道链接到哪个域(托管系统上有nginx反向代理)。但是我有一个问题,当我尝试$_SERVER['SERVER_NAME']从PHP访问时,它是空的...如何将其设置为恒定值?当我尝试:

fastcgi_param  SERVER_NAME example.com
Run Code Online (Sandbox Code Playgroud)

它仍然是空的。

请注意,我必须使用SERVER_NAME,因为它在第3部分代码中。

php nginx

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

PHP如何使用for循环创建数组值?

PHP如何使用for循环创建数组值?

$my_array=array(
   for ($i=0;$i<10;$i++)
      {
         $i,
      }
);

echo '<pre>'; print_r($my_array); echo '<pre/>';
Run Code Online (Sandbox Code Playgroud)

php arrays for-loop

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