php怎么删除链接,docker容器内怎么连接外部的mysql?
1.用-v挂载主机数据卷到容器内
[plain]viewplaincopy
dockerrun-v/path/to/hostdir:/mnt$container
在容器内拷贝
cp/mnt/sourcefile/path/to/destfile
2.直接在主机上拷贝到容器物理存储系统
A.获取容器名称或者id:
[plain]viewplaincopy
$dockerps
B.获取整个容器的id
[plain]viewplaincopy
$dockerinspect-f'{{.Id}}'步骤A获取的名称或者id
C.在主机上拷贝文件:
[plain]viewplaincopy
$sudocppath-file-host/var/lib/docker/aufs/mnt/FULL_CONTAINER_ID/PATH-NEW-FILE
或者
$sudocppath-file-host/var/lib/docker/devicemapper/mnt/123abc>/rootfs/root
例子:
[plain]viewplaincopy
$dockerps
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
d8e703d7e303solidleon/ssh:latest/usr/sbin/sshd-Dcranky_pare
$dockerinspect-f'{{.Id}}'cranky_pare
or
$dockerinspect-f'{{.Id}}'d8e703d7e303
d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5
$sudocpfile.txt/var/lib/docker/aufs/mnt/**d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5
3.用输入输出符
[plain]viewplaincopy
dockerrun-iubuntu/bin/bash-c'cat>/path/to/container/file'
或者
[plain]viewplaincopy
dockerexec-it
PHP下载网络资源文件?
引言
在程序内下载资源文件,这本身就是一个充满了不确定因素的事情。可能会因为网络超时连接中断,或者程序故障抛出各种异常,在实际中我们一般要避免在程序流程中下载文件。
如果是实在无法避免,用什么办法比较高效呢?或者说比较轻量级呢?本文就来说一说。
学习时间最直接的办法就是使用内置函数 file_get_contents。参数形式如下:
int file_put_contents( string $filename, mixed $data[, int $flags = 0[, resource $context]] )
这个函数设计的很巧妙,兼容了很多场景下的使用。我们只需要按照相应的参数填入,就可以组装出各种各样的功能。
如果是下载资源,那么会分为两步。第一,把远程资源拿到本地。第二,把该资源写入本地文件。使用代码实现如下:
file_put_contents("Tmpfile.zip", fopen("http://someurl/file.zip", 'r'));
其中在位置参数 $data 的位置,传入了一个fopen生成的文件句柄。
根据函数手册上所说,如果$data 指定的是流,则该流的缓冲区将被复制到指定的文件。对标的函数是 stream_copy_to_stream。那样写起来就得是这样的:
是不是没有file_put_contents精简。难怪很多敲代码的老司机,习惯于使用这一个函数进行网络请求呢!
文件操作纯粹使用文件操作,也没有问题,使用PHP提供的 fopen fclose fwrite fread 等函数,完全可以胜任。我们将其封装为一个助手函数:
因为不能确定原始文件的长度,在读写的时候,需要注意缓存区的大小,分块读入和写入。其中参数 1024 * 8,指定每次读写 8K 字节。使用 feof 判断文件是否到尾部。
网络请求既然是网络资源文件,使用上面的函数,无非都要发起 HTTP 请求。既然是网络请求,何不把这个功能交给 cURL 呢?这样对于请求头,请求体,响应体等等全程 HTTP 环节,都可以在程序内操作,容错性肯定不差。
下面我们使用 cURL 库进行文件请求操作:
如果是小小的资源文件,下载起来不费时间,也不会阻碍接下来的流程。如果是超大文件,费时间,而且还可能中断,有没有断点续传?有没有自动压缩?这都是问题。
所以,使用网络请求下载大文件,这已经超出了 PHP 内置函数的范畴。我们需要功能更为强大的下载器,多资源,多线程,断线续传,自动重试。
写在最后本文通过3中方法对比了实现小文件下载的功能,各有优劣,根据不同的场景需要开发者做出适当的选择。
Happy coding :_)
我是 @程序员小助手 ,持续分享编程知识,欢迎关注。
PHP源码如何修改?
PHP源码用记事本就可打开编辑了,当然用DW也可以。图片背景要改,可要看清图片的链接(或者直接将图片改成你要的图片也可),改文字格式要通过CSS来修改,链接的话,应该在网站后台就能修改。不过,这样改太累了点!而且PHP的网页无法直接在IE中预览。
建议你下载一个DEDECMS的企业版,然后把相关的图片(如Logo.gif)改成自己的,网站的频道(栏目)、链接都可以在安装后改。
PHP怎么输出超链接?
$link = '你的链接地址';echo "<a href='{$link}' title=''>点我打开地址</a>";
php的pconnect和connect的区别?
主要区别在于当php以apache模块方式运行时, 由于apache有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用.这就使得在apache并发访问量不大的时候, 由于使用了pconnect, php节省了反复连接db的时间, 使得访问速度加快. 这应该是比较好理解的.但是在apache并发访问量大的时候, 如果使用pconnect, 会由于之前的一些httpd进程占用的mysql连接没有close, 则可能会因为mysql已经达到最大连接着, 使得之后的一些请求永远得不到满足.例如:若mysql最大连接数设为500, 而apache的最大同时访问数设为2000假设所有访问都会要求访问db, 而且操作时间会比较长当前500个请求的httpd都没有结束的时候...之后的httd进程都是无法连接到mysql的(因已经达到mysql最大连接数). 只有当前500个httpd进程结束或被复用才可以连接得到了mysql.其实这个也很好解释了xgy_p的测试中若操作比较简单, pconnect比connect效率高很多, 而且跟使用jsp的连接池的速度比较接近. 因为这个时候httpd进程可以不断的给复用.而 当DB操作复杂, 耗时较长时, 因httpd会fork很多并发进程处理, 而先产生的httpd进程不释放db连接, 使得后产生的httpd进程无法连上db. 因为这样没有复用其它httpd进程的mysql连接. 于是会就产生很多连接超时, 像一开始的1000个并发连接测试说几乎都是连接超时就是这个原因.(反进来看jsp用的如果是纯粹的db连接池, 则不会有因为达到mysql连接上限而连不上的问题, 因为jsp的连接池会使得可以等待其它连接使用完毕并复用. )因此在并发访问量不高时,使用pconnect可以简单提高访问速度, 但在并发量增大后, 是否再使用pconnect就要看程序员的选择了.