• 关于

    HTTP/2是干嘛的

    的搜索结果

回答

这个问题已经解决,请看:<atarget="_blank"rel="nofollow">http://blog.linuxeye.com/342.html<atarget='_blank'>@codepat<imgsrc="/js/ke/plugins/emoticons/83.gif"alt="83"/>不客气正解,按此方法已解决,感谢! 把 --enable-opcache 去掉试试呢去掉了也不行啊,报同样的错一个玩PHP的,非要学人家玩C和嵌入式的搞撒子编译嘛!扯淡回复<aclass='referer'target='_blank'>@codepat:http://www.dotdeb.org/2013/06/20/php-5-5-0-is-out-and-available-for-debian-7-0-wheezy/我错了,我编译安装我有罪,你能告诉我哪里有PHP最新版本的源吗?弄那么高版本干什么,5.3就差不多了<divclass="ref"> 引用来自“好大的凶兆”的答案<divclass=ref_body>一个玩PHP的,非要学人家玩C和嵌入式的搞撒子编译嘛!回复<aclass='referer'target='_blank'>@codepat:关键是centos软件太老了啊,如果是去年出的软件,今年可以跟上的,我干嘛去编译,如果centos默认的php是5.4+mysql5.5+nginx1.4+谁去编译么,关键是php5.3mysql5.1nginx没有自己编译linux端方便布置管理撒。回复<aclass='referer'target='_blank'>@普华之光:没有5.5.1版本的啊,不过谢谢你回复<aclass='referer'target='_blank'>@codepat:http://rpmfind.net/linux/rpm2html/search.php?query=php你以为我想啊,装B又不能当饭吃,有现成的我干嘛要编译呢?你知道哪里有编译好的吗?或者能yum的也行,我用的是centos6.364位 windows下可以看看这个: <arel="nofollow">http://www.oschina.net/news/42444/xampps-1-8-4linux上的,不过谢谢你 google./configure--help|grepopcode./configure--help|grepopcache一般编译安装都会说各种依赖错误,但是,只要将错误信息往谷歌一搜,问题就解决了。 搞php与编译php不冲突。 我编译过5.5的,但是apc,xcache还没有跟进,所以就降到5.4了。
爱吃鱼的程序员 2020-06-23 11:53:36 0 浏览量 回答数 0

问题

如何配置部署云服务器环境,快速开始项目应用

当决定使用阿里云ECS 或者已经选好配置并开通实例,想要建一个网站或是部署一个Java 项目,该如何下手?你需要配置部署服务器环境。 可以通过如下三种方式实现: 1.自主安...
zhangmeng 2019-12-01 21:55:28 6872 浏览量 回答数 2

问题

如何配置部署云服务器环境,快速开始项目应用

当决定使用阿里云ECS 或者已经选好配置并开通实例,想要建一个网站或是部署一个Java 项目,该如何下手?你需要配置部署服务器环境。 可以通过如下三种方式实现: 1.自主安...
zhangmeng 2019-12-01 21:55:23 17164 浏览量 回答数 3

阿里云试用中心,为您提供0门槛上云实践机会!

100+款试用云产品,最长免费试用12个月!拨打95187-1,咨询专业上云建议!

回答

########下载源代码包##########wgethttp://subversion.tigris.org/downloads/subversion-1.6.15.tar.gz;wgethttp://subversion.tigris.org/downloads/subversion-deps-1.6.15.tar.gz;wgethttp://mirror.bjtu.edu.cn/apache/httpd/httpd-2.2.21.tar.gz;wgethttp://archive.apache.org/dist/apr/apr-1.4.2.tar.gzwgethttp://archive.apache.org/dist/apr/apr-util-1.3.10.tar.gz########下载源代码包##########yum-yinstallgcc*openssl-develexpat-developensslopenssl-devellibxml2-develglibc-commongd-devellibtool;########编译安装#################安装apr#########tarzxvfapr-1.4.2.tar.gz;cdapr-1.4.2;./configure--prefix=/usr/local/aprmake;makeinstall;cd..;###报错cannotremove`libtoolT':Nosuchfileordirectory 编译configuer把RM='$RM'改为RM='$RM -f'########安装apr-util########tarzxvfapr-util-1.3.10.tar.gzcdapr-util-1.3.10;./configure--with-apr=/usr/local/aprmake;makeinstallcd..###安装httpdtarxfhttpd-2.2.22.tar.gz cdhttpd-2.2.22./configure--prefix=/usr/local/apache--enable-dav--enable-so--enable-maintainer-mode--with-apr=/usr/local/apr/bin/apr-1-config--with-apr-util=/usr/local/apr/bin/apu-1-config  make makeinstallcdsupport/ cpapachectl/etc/init.d/apachechmod+x/etc/init.d/apache ########安装subversion########tarzxvfsubversion-1.6.15.tar.gz;tarzxvfsubversion-deps-1.6.15.tar.gz;cdsubversion-1.6.15;./configure--prefix=/usr/local/subversion--with-apxs=/usr/local/apache/bin/apxs--with-apr=/usr/local/apr--with-apr-util=/usr/local/apr--without-berkeley-db;make;makeinstall;#############下面就是配置你的svn,这个需要你手动操作1.建立svn版本库目录mkdir-pv/home/svnroot/datachown-Rvwww/home/svnroot/datachmod-Rv755/home/svnroot/data2.建立svn版本库/usr/local/subversion/bin/svnadmincreate--fs-typefsfs/home/svnroot/data/project1 3.建立访问控制文件/usr/local/apache/bin/htpasswd-c/home/svnroot/data/passwd myname #第一次加用户名/usr/local/apache/bin/htpasswd /home/svnroot/data/passwd test14.建立本地项目控制文件cd/home/svnroot/dataviauthz[groups]    admin=myname,test1 [project1:/]<aclass='referer'target='_blank'>@admin=rw cat/usr/local/apache/conf/httpd.conf|grepsvnLoadModuledav_svn_module  modules/mod_dav_svn.soLoadModuleauthz_svn_module modules/mod_authz_svn.so就表明安装成功。vi/usr/local/apache/conf/httpd.conf添加<Location/svn>  DAVsvn  SVNParentPath/home/svnroot/data  AuthTypeBasic  AuthName"Subversion"  AuthUserFile/home/svnroot/data/passwd  AuthzSVNAccessFile/home/svnroot/data/authz  Requirevalid-user</Location>5.启动apache/usr/local/apache/bin/apachectlstarthttp://ip/svn/project1直接yum<divclass="ref"> 引用来自“魔力猫”的答案<divclass=ref_body>直接yum回复<aclass='referer'target='_blank'>@OscerSong:恩,什么镜像?没镜像吗那么应该是还有别的Openssl包没有安装,你查看一下的。有时候要的不是运行库而是开发库。mail本地源或者自己编译。谢谢各位!问题已经解决了,我是安装独立的subversion,并不需要apache,openssl那个只需要在./configuare--wiht-openssl=/usr/local/ssl就可以了,但是后面还是报错了,缺少zlib,不知道这个是干嘛使的?后来又下载了,编译安装。下载可以到make&&makeinstall这步了,应该没问题了吧!多谢各位<imgsrc="http://www.oschina.net/js/ke/plugins/emoticons/images/6.gif"alt=""/>辛苦!我遇到和你同样的问题;按照你说的,是不是不管以前安装的,重新安装一次就可以了?急~求解决,多谢哈其实就是说你没有安装相应库的devel库,所以没有头文件而已
爱吃鱼的程序员 2020-06-22 21:20:14 0 浏览量 回答数 0

问题

请问这个是干嘛的?

阿里云--帮助中心: http://help.aliyun.com/manual?spm=0.0.0.0.SMLf5n&&helpId=1804  (即...
taiyangtu 2019-12-01 21:20:45 7120 浏览量 回答数 5

回答

之前好像看过有人有类似的问题,你把“spring-util.xsd”换成“spring-util-4.2.xsd”试试看,这个xsd在spring-beans-4.2.x.jar的“org.springframework.beans.factory.xml”里面的回复<aclass='referer'target='_blank'>@BabyMason:用什么管理工具进行构建管理没有,用用maven试试这个我试过了,一样报错干嘛不把版本对应上呢,你其他的都是4.0,为啥util的就不带版本号呢?回复<aclass='referer'target='_blank'>@南湖船老大:一会在重新拷贝一份试试,实在不行就没办法了,,,回复<aclass='referer'target='_blank'>@BabyMason:用了这么多年,表示没遇到你的情况。。还是clear下试试吧,或许你class目录下的xml文件有问题这个是我自己修改了下,默认的是带着的<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"  xmlns:aop="http://www.springframework.org/schema/aop"  xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.0.xsd">遇到一样一样的问题 不知道是不是spring官网出问题导致的 有些xsd网址在浏览器是可以打开的 但在eclipse中直接链接不过去 去了也没好用 不知道有什么好的解决办法没有 我的问题场景是这样的:一个依赖spring的项目,会使用到好几个spring.xml配置文件,项目启动是没问题的。后来服务器重启,第二天我重新启动项目,出现了<spanstyle="font-family:'MicrosoftYaHei',Verdana,sans-serif,SimSun;font-size:14px;line-height:22px;background-color:#E53333;">Causedby:org.xml.sax.SAXParseException;lineNumber:11;columnNumber:116;cvc-elt.1:找不到元素'beans'的声明<spanstyle="font-family:'MicrosoftYaHei',Verdana,sans-serif,SimSun;font-size:14px;line-height:22px;">的异常。我尝试了这台服务器上网,发现浏览器访问网络不通。 后来我不使用出现异常的xml文件,发现启动是可以的。然后我把启动不好使的xml文件改成了好使的xml,项目启动成功。(<spanstyle="background-color:#009900;">去掉了xsd版本号) 无异常xml:http://www.springframework.org/schema/beans/spring-beans.xsd 有异常xml:http://www.springframework.org/schema/beans/spring-beans-4.1.xsd而且启动好像比以前快了,可能是因为我不上网找带版本号的xsd了,而是在本地能找到了 工程目录.idea文件夹下如果没有codeStyleSettings.xml这个配置文件,就会出现你这样的情况,检查一下是不是缺少了配置文件 很简单啊。xxx/spring-beans.xsd">一定要有空格。回复<aclass="referer"target="_blank">@地上打滚的猪:什么意思,哪个地方要空格?大神,谢谢
爱吃鱼的程序员 2020-06-09 15:33:07 0 浏览量 回答数 0

回答

.php 做 提交到apache ###### 引用来自“滔哥”的答案 .php 做 提交到apache 不需要在nginx里面做配置嘛? ######中间层apache直接可以省略,直接nginx既做balance,也可以server###### 引用来自“Meso”的答案 中间层apache直接可以省略,直接nginx既做balance,也可以server 哎呀。这不是你说省略就省略的呀。需求要这么搞,就得这么搞呀。。。 ######需要 怎么配置还得需要具体需求来看了。 1:php和静态文件分别在两个不同的域,这是最好配置的了。 2:如果都在一个域,但是静态文件又都在一个目录下,那就把这一个目录交给nginx处理,其它的交给apache处理 3:这种是最麻烦的,到时都可能存在静态文件和php,那么把.js、.css、.flv、.swf、.gif、.png、.txt、.jpg、.jpeg,其它的都交给apache处理,如果有urlrewrite,但是后缀不带有html、htm等,那么htm、html也交给nginx处理,如果带有,那么只好都交给apache处理了 ######nginx.conf user www www; worker_processes 1; error_log /home/wwwlogs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; #limit_zone crawler $binary_remote_addr 10m; server { listen 80; server_name www.lnmp.org; index index.html index.htm index.php; root /home/wwwroot; location / { try_files $uri @apache; } location @apache { internal; proxy_pass http://127.0.0.1:88; include proxy.conf; } location ~ .*\.(php|php5)?$ { proxy_pass http://127.0.0.1:88; include proxy.conf; } location /status { stub_status on; access_log off; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; access_log /home/wwwlogs/access.log access; } include vhost/*.conf; } proxy.conf proxy_connect_timeout 30s; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 32k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_redirect off; proxy_hide_header Vary; proxy_set_header Accept-Encoding ''; proxy_set_header Host $host; proxy_set_header Referer $http_referer; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; httpd.conf 就不贴了 ,默认就行 ,伪静态 可以直接在 nginx .conf 里添加 ,也可以直接添加进httpd.conf 仔细研究揣摩以上 代码######好复杂,我一直都是nginx,php-fpm,mysql,这样的结构很好,不知道为什么要加一个apache,就算要平均负载,直接让dns,平均解析到不同的nginx上面,例如192.168.1.1,192.168.1.2,192.168.1.3. 然后碰到.php就丢给内网的php-fpm,几台机子rsync一下,把php代码一致,每台台子开个600进程.集群memcache,主从mysql,就这架构,我想百万级是一点问题没有阿.###### 引用来自“红星”的答案 nginx.conf user www www; worker_processes 1; error_log /home/wwwlogs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; #limit_zone crawler $binary_remote_addr 10m; server { listen 80; server_name www.lnmp.org; index index.html index.htm index.php; root /home/wwwroot; location / { try_files $uri @apache; } location @apache { internal; proxy_pass http://127.0.0.1:88; include proxy.conf; } location ~ .*\.(php|php5)?$ { proxy_pass http://127.0.0.1:88; include proxy.conf; } location /status { stub_status on; access_log off; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; access_log /home/wwwlogs/access.log access; } include vhost/*.conf; } proxy.conf proxy_connect_timeout 30s; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 32k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_redirect off; proxy_hide_header Vary; proxy_set_header Accept-Encoding ''; proxy_set_header Host $host; proxy_set_header Referer $http_referer; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; httpd.conf 就不贴了 ,默认就行 ,伪静态 可以直接在 nginx .conf 里添加 ,也可以直接添加进httpd.conf 仔细研究揣摩以上 代码 你这nginx里面的配置,是不是有用到fastcgi啊?这个东西放到nginx里面来干嘛? 据我所了解的,apache是以fastcgi来跑PHP的,而PHP是用php-fpm来管理fastcgi的,对吧?   ######你都 php-fpm了,还要apache干嘛###### 引用来自“xiaojia2008”的答案 你都 php-fpm了,还要apache干嘛 。。。。汗。。php-fpm是用来管理fastcgi的吧?要apache是要它以fastcgi方式来运行PHP呀。。。
kun坤 2020-05-31 17:47:12 0 浏览量 回答数 0

回答

.php 做 提交到apache ###### 引用来自“滔哥”的答案 .php 做 提交到apache 不需要在nginx里面做配置嘛? ######中间层apache直接可以省略,直接nginx既做balance,也可以server###### 引用来自“Meso”的答案 中间层apache直接可以省略,直接nginx既做balance,也可以server 哎呀。这不是你说省略就省略的呀。需求要这么搞,就得这么搞呀。。。 ######需要 怎么配置还得需要具体需求来看了。 1:php和静态文件分别在两个不同的域,这是最好配置的了。 2:如果都在一个域,但是静态文件又都在一个目录下,那就把这一个目录交给nginx处理,其它的交给apache处理 3:这种是最麻烦的,到时都可能存在静态文件和php,那么把.js、.css、.flv、.swf、.gif、.png、.txt、.jpg、.jpeg,其它的都交给apache处理,如果有urlrewrite,但是后缀不带有html、htm等,那么htm、html也交给nginx处理,如果带有,那么只好都交给apache处理了 ######nginx.conf user www www; worker_processes 1; error_log /home/wwwlogs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; #limit_zone crawler $binary_remote_addr 10m; server { listen 80; server_name www.lnmp.org; index index.html index.htm index.php; root /home/wwwroot; location / { try_files $uri @apache; } location @apache { internal; proxy_pass http://127.0.0.1:88; include proxy.conf; } location ~ .*\.(php|php5)?$ { proxy_pass http://127.0.0.1:88; include proxy.conf; } location /status { stub_status on; access_log off; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; access_log /home/wwwlogs/access.log access; } include vhost/*.conf; } proxy.conf proxy_connect_timeout 30s; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 32k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_redirect off; proxy_hide_header Vary; proxy_set_header Accept-Encoding ''; proxy_set_header Host $host; proxy_set_header Referer $http_referer; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; httpd.conf 就不贴了 ,默认就行 ,伪静态 可以直接在 nginx .conf 里添加 ,也可以直接添加进httpd.conf 仔细研究揣摩以上 代码###### 好复杂,我一直都是nginx,php-fpm,mysql,这样的结构很好,不知道为什么要加一个apache,就算要平均负载,直接让dns,平均解析到不同的nginx上面,例如192.168.1.1,192.168.1.2,192.168.1.3. 然后碰到.php就丢给内网的php-fpm,几台机子rsync一下,把php代码一致,每台台子开个600进程.集群memcache,主从mysql,就这架构,我想百万级是一点问题没有阿.###### 引用来自“红星”的答案 nginx.conf user www www; worker_processes 1; error_log /home/wwwlogs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; #limit_zone crawler $binary_remote_addr 10m; server { listen 80; server_name www.lnmp.org; index index.html index.htm index.php; root /home/wwwroot; location / { try_files $uri @apache; } location @apache { internal; proxy_pass http://127.0.0.1:88; include proxy.conf; } location ~ .*\.(php|php5)?$ { proxy_pass http://127.0.0.1:88; include proxy.conf; } location /status { stub_status on; access_log off; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; access_log /home/wwwlogs/access.log access; } include vhost/*.conf; } proxy.conf proxy_connect_timeout 30s; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 32k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_redirect off; proxy_hide_header Vary; proxy_set_header Accept-Encoding ''; proxy_set_header Host $host; proxy_set_header Referer $http_referer; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; httpd.conf 就不贴了 ,默认就行 ,伪静态 可以直接在 nginx .conf 里添加 ,也可以直接添加进httpd.conf 仔细研究揣摩以上 代码 你这nginx里面的配置,是不是有用到fastcgi啊?这个东西放到nginx里面来干嘛? 据我所了解的,apache是以fastcgi来跑PHP的,而PHP是用php-fpm来管理fastcgi的,对吧?   ######你都 php-fpm了,还要apache干嘛###### 引用来自“xiaojia2008”的答案 你都 php-fpm了,还要apache干嘛 。。。。汗。。php-fpm是用来管理fastcgi的吧?要apache是要它以fastcgi方式来运行PHP呀。。。
kun坤 2020-06-20 13:48:00 0 浏览量 回答数 0

问题

大数据时代——数据存储技术百问

如今计算机已经渗透到企业运作的各个角落,企业依靠所存放的这些业务数据进行决策,因此企业如何存放数据成为企业信息系统的重中之重,这也掀起了如今的存储热潮。根据不同的应用环境通过采取合理、安全、有效的方式将数据保存并能保证有效的访问需要更高要求...
yq传送门 2019-12-01 20:27:42 31965 浏览量 回答数 35

回答

已经自行搞定了,高手漂过吧,谢谢 http://www.513624.com/archives/960.html ------------------------- 回 2楼(李逵) 的帖子 不懂您说的是干嘛用的。。。。但还是安装了,您再试试有改观吗?
bjjcmy 2019-12-02 02:29:49 0 浏览量 回答数 0

回答

responsesetStatus()就可以了,干嘛还要获取呀 真是要用的话,servlet2.5是没有的,用3.1.0吧 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency> http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/3.1.0 多谢,我用jetty插件运行就有错,用tomcat运行就没问题,奇怪了回复 @jack_jones:只看错误,不好分析我用的就是3.1.0版本我没调用过getStatus方法,就是执行get请求,就出这个错我也遇见这个问题了。楼主解决了没!spring是4.1的 引用来自“蚂蚁蚂蚁”的评论我也遇见这个问题了。楼主解决了没!spring是4.1的我也是,用tomcat就好了,再问个问题,spirngmvc4,提交参数,怎么用实体对象接收呢?能不能给段代码
爱吃鱼的程序员 2020-06-14 21:26:44 0 浏览量 回答数 0

回答

Re【急】wdcp转到amh后,伪静态全部失效 如果需要ssh来编辑,麻烦给个命令,谢谢,新手实在不懂这些。 ------------------------- 回2楼dongshan8的帖子 谢谢斑竹,已经用你的方法修改了文章,但还是不行。 只能再看看了,估计不是这个文件的问题。 搞不懂了,wdcp安装后直接就可以使用,amh就不行。 ------------------------- 回4楼dongshan8的帖子 1. 是apache 2. 修改后重启过apache 3. 具体的目录?这个是什么意思呢? ------------------------- 回6楼dongshan8的帖子 挂了个伪静态,就变成403. 伪静态文件不用,就是404. 搞不明白了 以前用wdcp,啥都没有配置,就可以用 改到amh,不知道什么原因,就是不型。 但是不启用伪静态,就可以正常。 thinkphp ------------------------- 回8楼dongshan8的帖子 你好,斑竹 是最新5.1版本的 ------------------------- 回10楼dongshan8的帖子 ------------------------- 回12楼dongshan8的帖子 谢谢您,我试试看这2个方法能不能解决 ------------------------- 回13楼dhdz187的帖子 还是不行,换了个php版本后可以了,但是每次重启apache,又挂了。 看来还是换回wdcp吧 谢谢你一路以来的回复帮助 ------------------------- 回12楼dongshan8的帖子 http://www.meili999.com/weixin/index/id/53.html 现在一切都是OK的,但是重启apache就挂了,URL链接都错了。 ------------------------- 回17楼dongshan8的帖子 版主,终于可以了,太感谢了。 amh很奇怪,比wdcp奇怪。 我用着用着是可以的,但是如果中途更改任何一个程序文件,如果不重启apache和mysql(2者必须同时),就会出现链接错误。 两者同时重启,就OK。 折腾了一下午,原来如此。现在完美解决了。 纳闷的是,为什么更改程序文件,需要同时重启apache和mysql呢?在wdcp,随便更改文件都不需要的。 是不是因为安装了amh的amhpathinfo模块 ------------------------- 回17楼dongshan8的帖子 还以为搞定了,原来又空欢喜一场。刚刚还可以,下楼去超市买个东西回来,添加了几篇文章,url地址又全部挂了。 看来得换回wdcp了。 ------------------------- 回21楼zuijh的帖子 嗯,说的也对,不影响网站正常运行就好 ------------------------- Re回22楼dhdz187的帖子 引用第24楼dongshan8于2015-05-31 17:38发表的 回 22楼(dhdz187) 的帖子 : 早知道……您可能就不去超市了。   [url=http://bbs.aliyun.com/job.php?action=topost&tid=245671&pid=660083][/url]    斑竹,知道amh的pathinfo干嘛的吗?为什么用这个后,伪静态全部都OK了,但是相对地址全部出错。 而且同一个页面,不做任何服务器环境的改变,过上一段时间,里面的相对地址都会变? ------------------------- 回 24楼(dongshan8) 的帖子 比如首页: http://www.meili999.com/ 点开最新收录,链接地址是 http://www.meili999.com/index.php/weixin/show/id/weixin/news/id/90.html 但是这个页面的真实地址 http://www.meili999.com/weixin/news/id/90.html 却是可以打开的。 不启用pathinfo,全部返回404. ------------------------- Re:回 25楼(dhdz187) 的帖子 引用第27楼dongshan8于2015-05-31 19:27发表的 回 25楼(dhdz187) 的帖子 : 您好, 如果您指的是php的pathinfo函数,请看这里:http://php.net/manual/zh/function.pathinfo.php 一个使用phpinfo来实现网址静态化的例子,如wordpress,请看这里:https://codex.wordpress.org/zh-cn:%E4%BD%BF%E7%94%A8%E5%9B%BA%E5%AE%9A%E9%93%BE%E6%8E%A5 [url=http://bbs.aliyun.com/job.php?action=topost&tid=245671&pid=660102][/url] 谢谢,不折腾了,换回wdcp了,不再纠结了。
dhdz187 2019-12-02 02:24:47 0 浏览量 回答数 0

回答

。。。。你这什么意思?我不是很明白,你链接远程数据库要webservice干嘛?既然你又研究了webservice还要链接数据库干嘛?我把服务器端发布成Webservice,然后通过SOAP协议解析,但我不晓得为什么,导入ksoap.jar包后,没有Soapobject对象,求demo。你是想通过webservice来实现对非本地的数据库操作?Android.jar没有全部实现Jdk里面的所有类 自己去下啊 <atarget="_blank"rel="nofollow">http://www.oschina.net/p/ksoap2+android
爱吃鱼的程序员 2020-06-22 15:04:11 0 浏览量 回答数 0

回答

responsesetStatus()就可以了,干嘛还要获取呀 真是要用的话,servlet2.5是没有的,用3.1.0吧 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency> http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/3.1.0 ######多谢,我用jetty插件运行就有错,用tomcat运行就没问题,奇怪了######回复 @jack_jones:只看错误,不好分析######我用的就是3.1.0版本我没调用过getStatus方法,就是执行get请求,就出这个错######我也遇见这个问题了。楼主解决了没!spring是4.1的###### 引用来自“蚂蚁蚂蚁”的评论我也遇见这个问题了。楼主解决了没!spring是4.1的换成tomcat7就行了!######我也是,用tomcat就好了,再问个问题,spirngmvc4,提交参数,怎么用实体对象接收呢?能不能给段代码
优选2 2020-06-09 15:47:49 0 浏览量 回答数 0

回答

response setStatus()就可以了,干嘛还要获取呀 真是要用的话,servlet2.5是没有的,用3.1.0吧 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api/3.1.0 ######多谢,我用jetty插件运行就有错,用tomcat运行就没问题,奇怪了######回复 @jack_jones : 只看错误,不好分析######我用的就是3.1.0版本 我没调用过getStatus方法,就是执行get请求,就出这个错######我也遇见这个问题了。楼主解决了没!spring 是4.1的###### 引用来自“蚂蚁蚂蚁”的评论我也遇见这个问题了。楼主解决了没!spring 是4.1的 换成tomcat7就行了!######我也是,用tomcat就好了, 再问个问题,spirngmvc4,提交参数,怎么用实体对象接收呢?能不能给段代码
爱吃鱼的程序员 2020-05-30 22:00:32 0 浏览量 回答数 0

回答

“可我想给网站BBS弄二级域名提示我没有备案.... ” 这个情况是怎么来的? 备案服务号么, http://bbs.aliyun.com/read/259103.html?spm=5176.bbsl229.0.0.HtZHTB ------------------------- 回 2楼(爱上小萝莉) 的帖子 自己在机器哪里做一个301条转不就够了,干嘛一定要在dns上浓
妙正灰 2019-12-01 23:26:52 0 浏览量 回答数 0

问题

discuz3.2 win2003系统切换到linux系统切换后还需要干嘛

discuz3.2 win2003系统切换到linux系统切换后还需要干嘛 操作系统:centos5.5 (无奈服务商只有这个) Web服务器:Nginx/1....
天朝就这 2019-12-01 21:30:09 7258 浏览量 回答数 3

问题

看来百度跟阿里云果然有猫腻。。。。。连日志都不让我发

我刚发一篇日志在我的百度空间里: 阿里云服务器 Centos 安装 Direatadmin  日志 接着给百度管理员莫名其妙删了,莫非百度上头有下达什么法令,或者阿里云是敏感字...
kumotobi 2019-12-01 20:54:32 12241 浏览量 回答数 13

回答

Re阿里云做的discuz论坛为什么才显示内存溢出http://bbs.2s88.com 不是阿里云的用户跑这里干嘛?纯粹AD的嫌疑; 我看了一下,网站一天发帖数千,不过都是采集。
scmny 2019-12-02 00:48:06 0 浏览量 回答数 0

回答

Re请问这个是干嘛的? WDCP和自己的路 相比哪个好一些? ------------------------- 回2楼yyd521的帖子 我的意思是:安装WDCP环境控制面板( 用该教程的话( http://bbs.aliyun.com/read.php?tid=136196) )之前需要做哪些事情?--像上面的“优化分区并格式化以提高IO性能”还需要吗? 谢谢
taiyangtu 2019-12-02 01:34:07 0 浏览量 回答数 0

问题

为程序猿正言,程序猿是很有文化的,七夕考虑约一下呗!

眼看着七夕就要到了,身边一群单身程序猿开始焦躁了。 不要以为他们只会敲键盘,不解风情,其实他们很想找个爱情恋恋。 不要以为他们头脑里只有代码,不会吟诗作赋,...
cheerup1231 2019-12-01 21:01:16 6409 浏览量 回答数 3

问题

git自建代码库,从阿里云上拉取代码报“Recv failureConnection reset by peer”

问题描述: 1、我们公司自己在内网搭建了一个git的代码库。 2、我们会从阿里云上拉取git代码库的代码,在服务器上编译打包。 3、之前使用的是价值不超过200块的路由器,可以从阿里云上拉取到代码。...
苓葫 2019-12-01 22:03:15 6351 浏览量 回答数 3

回答

拿PHP提供的session来说,默认使用的是文件存储的方式,会话文件就保存在当前的服务器,一般是/tmp下: session.save_handler=files session.save_path=/tmp PHP的会话机制会给客户端设置一个cookie用来保存sesseion_id,对应服务器上的会话文件/tmp/sess_ sesseion_id 把这些session绑定在本机的Web应用放到 Nginx的upstream应用集群应该是不合适的,就算 设置ip_hash让固定IP只访问一个后端, 但如果客户端IP在会话中改变,那就有可能连上后端其他的服务器,这样会导致找不到会话. 还有如果这台后端服务器宕机,那用户的会话也会丢失. 所以最好还是自己用cookie实现一套适合自己的session机制,比如用mysql内存表或者memcached来保存cookie对应的会话数据,非关键和不敏感的数据直接设置cookie保存到客户端,这样会话数据就不会存储在具体的应用服务器上,方便了使用Nginx的 upstream进行php-fpm应用服务器集群扩展. 引用来自“eechen”的答案 拿PHP提供的session来说,默认使用的是文件存储的方式,会话文件就保存在当前的服务器,一般是/tmp下: session.save_handler=files session.save_path=/tmp PHP的会话机制会给客户端设置一个cookie用来保存sesseion_id,对应服务器上的会话文件/tmp/sess_ sesseion_id 把这些session绑定在本机的Web应用放到 Nginx的upstream应用集群应该是不合适的,就算 设置ip_hash让固定IP只访问一个后端, 但如果客户端IP在会话中改变,那就有可能连上后端其他的服务器,这样会导致找不到会话. 还有如果这台后端服务器宕机,那用户的会话也会丢失. 所以最好还是自己用cookie实现一套适合自己的session机制,比如用mysql内存表或者memcached来保存cookie对应的会话数据,非关键和不敏感的数据直接设置cookie保存到客户端,这样会话数据就不会存储在具体的应用服务器上,方便了使用Nginx的 upstream进行php-fpm应用服务器集群扩展. 回复 @eechen:同样多谢大神,我刚开始学习nginx,太复杂的话反而我怕造成其他问题,ip_hase这样的方式也算是适合我们想在的系统环境了,不是完全“均衡”的负载,但是也能分担单个节点压力,存在节点的宕机风险导致部分用户无法使用,也好过现在单个节点承受的风险,是不是这个道理哈~~这个你最好问下Tengine作者 @shudu,看看有没有可行的方法。把内网特定的IP段用Nginx分流到后端Tomcat上,可以试着这样干: server{if($remote_addr=192.168.0.20){location~\.(jsp|do)${proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-For$remote_addr;proxy_set_headerHost$host;proxy_passhttp://192.168.0.1:8080;}}} 把来自192.168.0.20的jsp和do请求proxy给后面192.168.0.1的服务器。 条件$remote_addr 那里可以用正则匹配一个IP段,这样应该就可以把该IP段的动态请求导到指定的Tomcat服务器上。后台系统是java吗?回复 @夏天198801:不一定非要序列化,可以后台转换成json,存入memcached,取出json再映射成session回复 @屁屁果:额,这个之前试过,但是后来发现tomcat里面有一个工程的session没有序列化,做不了session共享,上面描述问题里面我也提到过了,我们的开发不好协调,找他们做session序列化没做好回复 @夏天198801:可以扩展tomcat,实现容器级别的session共享,就和应用没有关系了http://www.9iu.org/2011/11/25/tomcat-memcached-session-sso.html是啊,后台是java,容器是tomcat 可以把session托管到memcache或者redis嘛 推荐你使用Tengine: 1、使用Tengine的consistent_hash功能,以你的登录的cookie为key,这样的话一个固定的用户(登录cookie值)可以hash到一台固定的机器上。 2、如果没有登录(即没有登录cookie),则使用round-robin方式(默认的负载均衡方式)。 3、你可以使用if来判断cookie值是否为空。兼容从nginx转tengine有无什么限制?都兼容么?赞一个mark客户端服务器session是靠浏览器cookie维持的,每次去请求都会带一个参数SESSIONID。so...只要把nginx的分发策略设置为根据cookie中的SESSIONID来分发。可以满足你的需求。只要第一次登陆(不管ip是否登陆过)都会走负载,重新分配节点;如果已经访问过(带cookie)则可以保证分配到同一节点。QQ:875881559欢迎交流
爱吃鱼的程序员 2020-06-22 14:22:45 0 浏览量 回答数 0

回答

回 2楼(阿king) 的帖子 文档这块我们正在尝试改进。如果在查看文档时有任何的疑问,非常欢迎在文档中心填写意见反馈,或者直接在工单中指出问题,我们会及时对文档中的问题进行修正。希望有大家的帮助,让OSS更加方便简单。 ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第6楼真的小白于2015-03-23 11:12发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : 我一直没搞懂那个 跨域资源共享  貌似在控制台叫cros设置   这个功能是干嘛的啊 ? 跨域资源共享(Cors)是Html5协议解决ajax跨域资源调用问题的功能。如您的程序为Web站点或基于Html5开发的APP应用可以通过跨域资源共享解决这个问题,其他使用场景用不到这个功能。   由于ajax等的同源策略 ,会禁止获取其他域名的资源。 比如,这样的操作是被禁止的。 xhr.open("GET", "http://www.taobao.com/pic.jpg", true);   以前要实现跨域访问,可以通过JSONP、Flash或者服务器中转的方式来实现,但是现在我们有了CORS。 现在大部分浏览器都可通过名为Cross-Origin Resource Sharing(CORS)的协议支持ajax跨域调用。 ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第5楼宝宝助手于2015-03-23 11:11发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : 我最近上传的时候都返回地址了。但是用地址访问内容时却是 0KB 没有上传成功? 用的php SDKV2          pubObject 的时候偶尔就会这样! 到底怎么回事!!我都想转到七牛去了。前几天七牛的人才来拿服务比较 人家还上传下载双向CDN    如果上传后返回了200,表示这次上传是成功的。并且可以在上传时带入数据的MD5值,服务器端会帮用户做校验,防止网络传输中出现数据丢失。 有其他的可能的类似问题,可以提交工单,客服同学会帮你仔细排查问题。 同时,建议使用php sdk v1版本。v2版本已不再维护增加新功能。 如果使用OSS中任何困扰,欢迎使用工单,论坛等方式告知我们,我们需要你的声音。 ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第14楼我是菜鸟2于2015-03-23 12:32发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=xxx&Expires=xxx&Signature=xxx 问题1  【Signature代表什么 】 问题2 【如何向这个地址(oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=xxx&Expires=xxx&Signature=xxx)上传文件】 ....... 这段url表示使用url签名的方式来直接访问OSS资源,主要针对 【客户端/服务器端】 这样的用户场景: Access key 存储在服务器端,客户端想访问一个OSS资源没有权限,需要先向服务器端发送操作信息(包括操作哪个资源,完成什么操作等)。服务器端根据信息与Access key生成Signature(签名信息),并以一个url的形式传给客户端。客户端使用该url完成之前约定的操作。 问题1  【Signature代表什么 】 签名(Signature)信息是用户的服务器端生成的身份签名,用户的客户端使用该签名来完成操作。OSS根据这个签名来判断操作是否合法。 问题2 【如何向这个地址(oss-example.oss-cn-hangzhou.aliyuncs.com/oss-api.pdf?OSSAccessKeyId=xxx&Expires=xxx&Signature=xxx)上传文件】 该url只能完成特定的操作,比如控制台上生成的签名url是用于用户发送get请求,获取object。用户如果要生成put操作的签名url,可以参考JAVA SDK中的实现: 点击这里 。 对于想参考实现签名算法,这里给一些建议: 1. OSS api 接口基于标准的http协议规范,签名是通过对请求的方法,资源位置,请求头等以AccessKeySecret为秘钥按照统一方法加密生成的。具体方法可以参考API文档: 点击这里 2. 论坛中提供了一个可视化签名demo,希望能对你有所帮助: 点击这里 3. 各个SDK版本都已开源的,可以尝试参考一下。后续也会推出更多语言的SDK。 4. 如果对签名还有疑惑与困难,告知我们,后续会考虑推出更多帮助文档以及demo来帮助用户 ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第19楼老陈小安于2015-03-24 13:19发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : 我想问几个问题: 1、OSS选定存储区域后,在这个区域里有什么数据可靠性措施?比如一般的存3份? 2、OSS选定存储区域后,可以跨区域存储吗?比如我觉得只存在杭州一个区域不安全,我希望在北京存储区域再放一份,可以实现吗? 3、OSS能提版本控制功能吗?一个文件,我在下载到本地修改后,再上传,能提供上一次的版本控制吗? 4、OSS只有官方推荐第三方管理软件,有没有官方自己的管理软件? ....... 【问题】 OSS选定存储区域后,可以跨区域存储吗?比如我觉得只存在杭州一个区域不安全,我希望在北京存储区域再放一份,可以实现吗? 暂时不支持此功能,因为OSS底层已经实现了3分数据备份,所以您大可以放心您的数据安全。且如果您的数据很多,多存一份也会增加您的存储成本。 【问题】 OSS能提版本控制功能吗?一个文件,我在下载到本地修改后,再上传,能提供上一次的版本控制吗? 不支持版本控制 上传相同名的object在OSS端是覆盖原有信息。 OSS只有官方推荐第三方管理软件,有没有官方自己的管理软件? 官方推出过命令行工具,OSSCMD。 官方推荐的客户端工具是经过我们安全部门认证审核的,保证安全性与质量。 同时我们会推动我们的合作伙伴服务商推出更多工具。 【问题】 OSS的API与其他厂商的兼容吗?比如和X牛? 不支持 【问题】 OSS后续有什么新功能设计?比如音视频转码? 新功能的上线尽请期待我们的官网公告。 音视频转码服务主要通过阿里云其他云产品支持,比如可以使用MTS做视频转码。 【问题】 OSS存储计费,是用阶梯方式计费吗?还是按传统的,我用了600G,就按600G范围的单价计算?,如果是按阶梯计费方式,这有什么优势呢? 存储和流量都是按照阶梯计费的。采用的是类似计税使用的超额累进的方式,将你使用的资源量切分成不同段,按不同价格计费。 比如600T的存储费用=(50-0)*价格1+(500-50)*价格2+(600-500)*价格3 采用这样的方式,对用户来说使用资源量越大,价格会越便宜。 【问题】 最后,能说说OSS的定位是什么?面向服务商的,还是面向最终客户的? OSS的最终面向用户是开发者用户,为有存储需求的用户提供海量,安全,高可靠,支持高并发的企业级云存储服务。 ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第29楼fds-em于2015-03-25 20:45发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : 域名绑定。CNAME跟我网站的A记录冲突怎么解决啊?而且子域名先认证文件然后把A记录删除后。然后再用CNAME。那么访问也是没用啊 参考下这个教程 http://docs.aliyun.com/#/oss/getting-started/bucket-attributes&cname 注意核对您的区域(您的Bucket所在区域不同cname地址也不同) ------------------------- Re:ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) 引用第38楼金龟于2015-03-26 13:01发表的 ReOSS大学堂OSS产品技术互动第一期OSS的介绍及控制台操作(3.23-3.27) : 为什么没有 批量转移目录,全选等功能 您可以使用这个客户端工具解决您的需求 http://bbs.aliyun.com/read/231195.html   ------------------------- 回 18楼(渴望更高) 的帖子 您可以使用移动端的SDK,直接通过手机上传图片到OSS, SDK文档: android-sdk http://docs.aliyun.com/#/oss/sdk/android-sdk ios-sdk http://docs.aliyun.com/#/oss/sdk/ios-sdk ------------------------- 回 17楼(寂寞先生) 的帖子 您可以参考下这个帖子 http://bbs.aliyun.com/read/233791.html
ossbaymax 2019-12-02 01:54:17 0 浏览量 回答数 0

问题

php版本osssdk的一些吐槽

1.  类ALIOSS的构造函数 在检测参数的时候,既然抛出了异常,干嘛还要自己去try catch,并且还在catch里面做了die操作,完全是脱了裤子放屁,追...
huilet 2019-12-01 20:16:57 11481 浏览量 回答数 4

问题

CAS单点登陆认证过程诸多疑问?:报错

一觉睡醒突然想起一年前用过的CAS单点登陆服务器,突然发现有一些东西想不明白了,在这里问问大家,有比较了解的谢谢赐教哈。http://www.coin163.com/java/cas/cas.htm...
kun坤 2020-06-06 14:34:31 0 浏览量 回答数 1

回答

"首先,不论是PHP还是JS都不能修改客户端的文件。 你可以在客户端用JS修改XML数据,注意是数据,再传到服务器端用PHP保存成文档。######+1,网页不能允许你修改客户本地内容,得到数据然后后台根据这些数据再去读写服务器上的内容######我可以用js操作vba修改我本地的office文档,这是怎么回事######意识是不管xml放在服务器里面还是我本地的e盘里都不能修改吧?######回复 <a href=""http://my.oschina.net/u/1029302"" class=""referer"" target=""_blank"">@業餘碼農 : 映射可能不准确,应该是理解成副本要好点。######回复 <a href=""http://my.oschina.net/u/1029302"" class=""referer"" target=""_blank"">@業餘碼農 : 这两天脑壳想了很多。个人理解成,每个用户在处理php等的时候是获取其文档里面的一个映射,然后再处理。你说的fclose,我理解成很多用户在一个服务器里面映射了很多php文档,如果不关闭,每个映射在处理过程中都占用一定内存,但是~!~,如果没个用户使用映射的时间不一样,那么对于fclose就可有可无,因为反正用户使用映射完了传送数据给用户了,打开的文档就自动关闭,是把?######回复 <a href=""http://my.oschina.net/kog7"" class=""referer"" target=""_blank"">@kog-7 : 而unset,不一定是用来销毁数组的。 也可以用来销毁数组元素的。比如unset( $arr['a'] ); 这样就是纯粹的数组函数了。 关于PHP事件,不知道可不可以这样称呼, PHP只有一种事件,就是请求事件,就是说只有客户端请求它才会响应并执行。 当然如果你在服务器设置了计划任务那就另当别论了。 以上都是我的个人观点。经验之谈。 不一定正确。######回复 <a href=""http://my.oschina.net/kog7"" class=""referer"" target=""_blank"">@kog-7 : fclose你可能现在看不出作用。 但是大项目的时候,资源优化要做的很全面的。 一个用户读一个文件是1M,1000个用户同时读就是1G,并且占用1000个I/O资源,用完就手动fclose,而不是等到程序结束,这样就能在同一时刻减少I/O占用率( 有时你看到fclose靠近文件末尾,但那里有时并不代表程序结束。特别是面向对象程序设计 )。######回复 <a href=""http://my.oschina.net/u/1029302"" class=""referer"" target=""_blank"">@業餘碼農 : 就是点击,或者某个状态生成了激活某处功能。######<div class=""ref""> 引用来自“kog-7”的答案 我可以用js操作vba修改我本地的office文档,这是怎么回事 百度了一下 : Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic Script。 关键是你能修改别的文档吗? ###### 引用来自“kog-7”的答案 意识是不管xml放在服务器里面还是我本地的e盘里都不能修改吧?  。。呃,关键不在于内存的占用。 而在于I/O的占用。 内存很便宜,但是I/O资源有限,你要知道像百度谷歌这样的大网站,每秒钟都会有几千上万的用户在同时操作。而且一个请求不是一秒就可以完成的。 虽说现在有什么负载均衡的技术,不过算下来,每时段的用户请求也不是小数目 。fclose要养成习惯。数据库也是一样。 遇到大项目就不易出问题。 你说的映射,或者副本,应该可以理解成C语言里的指针。 你可以想象一下,如果某个用户上传了一个100G的文件,如果要删除这个文件,是不是要把它载入内存? 我想不可能吧。  读取也是一样, 通过指针去读取数据流而已。 而不用把整个文件放入内存。 并且单个用户的内存占用是有限制的。所以fclose是省I/O。 ######如果没经过内存的,再要引用他,就要指定相关已被传输的文档,然后找起!!!是不? (限制字数,我分开回答)######同时我理解的js和html也如此,也是向文档请求,然后文档把其代码复制张贴到内存。。。这样子我觉得要容易理解一些,也很容易解释为什么你操作的js是不会反应到本来的js文档中的。。。。同时对于跨内容的传递,比如你说的100g的文档,我理解的是,让这个100g移动的命令是在内存中的,但是命令只是要求其从a文档移动到b文档,不经过内存。。。同时,如果有那种要经过内存的数据,就可以直接引用其值######我说的副本,理解是,比如服务器上有个PHP文档,我在浏览器请求这个php,那么这个php就把其代码复制张贴到内存中运行(所以这个副本跟前面的php就没有关系了),然后内存的代码运行得出一些数据。。######呵呵,不知道I/O是什么东西,都是自学的,这些没看到,读书的时候工科,所以c什么指针的不重要都在睡觉。######  所谓I/O就是输入输出。通俗说,就是硬盘的数据通道。你fopen一次,就占用一个通道(直到程序执行结束或fclose)。硬盘的I/O发展远没有容量发展的快。 所以硬盘容量可以十几个TB但是I/O还是差不多。  你说的副本这个原理,我也说不清楚,我也是自学的。 C语言也只是了解了一下而已。 不论PHP JS HTML都是载入内存来执行的。 但是会不会一个用户载入一个PHP我就不敢肯定了。 不过有一点可以肯定, 你在服务器修改程序,新的请求会得到新的程序执行的结果 。 而不需要重启PHP服务,这应该能证明你说的副本吧。 然后html不算编程语言,是标记语言,你不能说一个html文件是一个程序吧,程序的结果是可变的,纯html 是固定的。js不能操作文档不是因为它被载入内存。 PHP也被载入内存的,任何程序都要载入内存去执行。 关键在于js寄存的浏览器,没有给js操作权限。 js被包裹起来了。 只能通过浏览器去操作cookie之类的有严格限定的文件。 而php的解释器是拥有文件操作权限的。 当然只是有服务器的文件操作权限。 客户端的东西是不能操作的。 至少光凭它自己是不能的。 同样的,js也是不能操作服务器上的东西的。 就算是读取服务器的文件,也是要经过apache之类 的服务器软件来读取的。 js本身只是给服务器发个话。 服务器给不给返回,还是看服务器心情的。 很多东西个人理解会有偏差,我建议你有不理解的地方就查查文档。 比我这种业余的码农更权威。 ######还有就是不管i/O和内存,都是开始说的一个用户占用部分的东西,如果多个用户不是同时解析,那么,,就可以说成是fclose这个可以不写,当然写了最好######额,问下,你什么行业啊,以前学什么专业。。? 专业的书籍我看了一些,但是一两本书说的很少,同时国内的书确实不好,国外的书翻译的又老火。###### 我就是一个业余的爱好者而已。没学过什么专业,也不在什么行业。 纯兴趣。 当然以后就难说了。 老实说,我是最近一年才学的编程。 但是计算基础方面的东西积累了很多年,也有一定的了解了。 你叫我买书来看我真看不下去。 我的方法是,先看视频。 对一门语言有大概了解,然后把文档上的每一条都拿 来琢磨透,然后开发小项目。 当然我也没能吞下文档。 所以才成为业余的。 另外上面这个问题 如果多个用户不是同时请求或者用户很少,自然不需要fclose了。 不过也有可能程序结束没有关闭I/O连接导致进程关闭失败造成僵尸进程, 浪费了资源。也难说的。 ######呵呵,你让我想起了有,不要问我从哪里来,我不也不知道去哪里,我不属于任何地方,未来一切皆有可能的某部电影~~~~###### @kog-7 这是褒奖吗。。。。 ######回复 @Infinity : 改xml的php,写在上面,感觉用了很多重复的话######回复 @業餘碼農 : 那好多人都去提鞋了~我只是好奇好奇,你要是提鞋的,我就是给别人檫菊花的~!~######。。。。要是有个人对自己的身份工作支支吾吾遮遮掩掩,要么他是个特工黑客要么他就是个提鞋的。你觉得我像不像特工呢?######回复 @業餘碼農 : 呵呵,搞那么多标签干嘛嘛,你就是你,我只想了解你是干嘛的。######回复 @kog-7 : 。。。。。。。。。。。。农二代工一代码后代。######就是这个改xml,感觉写多了<?php header("Content-type: text/html; charset=utf-8"); print '<style> body{ background:rgba(223,238,231,0.9); } .error{color:rgb(182,69,69);font-size:60%;} .iput { border:1px solid black;      height:10%; background:rgb(223,238,231); font-family:"Microsoft YaHei",微软雅黑,helvetica; } #word0u { margin-left:2%; float:left; margin-top:5%; font-family:"Microsoft YaHei",微软雅黑,helvetica; } #input0u { list-style-type:none; float:left; margin-top:5%; } </style>'; print "<script> function closef() {window.parent.document.getElementById('screen').style.display='none';} </script>"; print '<body><button  style="cursor:pointer;border:1px;right:0px;top:0px;font-family:arial;font-weight:bolder;position:absolute" onclick="closef()">X</button>  '; $pro=true; if($_SERVER['REQUEST_METHOD']=="POST") { $pro=false;    if(empty($_POST['user'])||empty($_POST['pw'])||empty($_POST['pw2']))    {$pro=true;    print '<span class="error">'.iconv('gb2312','utf-8','请输入用户名和密码').' </span>';}    if(strlen($_POST['user'])>15)    {$pro=true;    print '<span class="error">'.iconv('gb2312','utf-8','用户名要小于5位数').' </span>';}    if(strlen($_POST['pw'])<5)    {$pro=true;    print '<span class="error">'.iconv('gb2312','utf-8','密码要大于5位数').' </span>';}    if(empty($_POST['pw'])!=empty($_POST['pw2']))    {$pro=true;    print '<span class="error">'.iconv('gb2312','utf-8','两次密码输入不一样').' </span>';}  $xmluser=new DOMDocument;  $xmluser->load('euser.xml');  $users=$xmluser->getElementsByTagName('user'); for($i=0;$i<$users->length;$i++) { if($users->item($i)->childNodes->item(0)->nodeValue==$_POST['user']) { $pro=true; print '<p class="error">'.iconv('gb2312','utf-8','有人用了这个用户名').'</p>';; break; } } } if(!$pro) { date_default_timezone_set('Asia/Shanghai');  $log= $xmluser->createElement('log');  $user= $xmluser->createElement('user');  $pw= $xmluser->createElement('pw');  $time=$xmluser->createElement('time'); $usert=$xmluser->createTextNode($_POST['user']); $pwt=$xmluser->createTextNode($_POST['pw']); $da=date("Y-m-d"); $timet=$xmluser->createTextNode($da); $user->appendChild($usert); $pw->appendChild($pwt); $time->appendChild($timet); $log->appendChild($user); $log->appendChild($pw); $log->appendChild($time); $xmluser->documentElement->appendChild($log); $xmluser->save('euser.xml'); print "<h2 style='font-family:微软雅黑,helvetica'>".iconv('gb2312','utf-8','欢迎').$_POST['user']." ".$da." ".iconv('gb2312','utf-8','您已注册')."</h2>"; $uu=$_POST['user']; $pp=$_POST['pw']; print "<script> window.parent.document.getElementById('user').innerHTML='hello<br>$uu'; window.parent.document.getElementById('login').style.display='none'; window.parent.document.getElementById('logon').style.display='none'; window.parent.document.getElementById('cookss').style.display='none'; window.parent.document.getElementById('clears').style.display='inherit'; window.parent.document.getElementById('chat').src='example1.html'; document.cookie='koguser=$uu'; </script></body>"; } else { print "<p style='font-family:arial;font-weight:bold;font-size:150%;letter-spacing:5px;margin-left:auto;margin-right:auto;width:70%;height:10%;text-align:center;margin-top:2%'>welcome</p>"; $_POST=array(); print  "<form action='elog.php' method='post'><ul id='word0u'><li>".iconv('gb2312','utf-8','用户名')."</li><br><li>" .iconv('gb2312','utf-8','密码')."</li><br><li>" .iconv('gb2312','utf-8','再次确认密码')."</li></ul> <ul id='input0u'><li><input class='iput' type='text' name='user' size='20'/></li><br> <li><input class='iput' type='password' name='pw' size='20'/></li><br> <li><input class='iput' type='password' name='pw2' size='20'/></li></ul><div><input style='border:2px solid black;clear:left;font-family:helvetica;background:rgb(223,238,231);margin-left:42%;margin-top:3%;font-size:18px;width:100px;text-align:center' type='submit' value=".iconv('gb2312','utf-8','注册')."></div></form></body>"; } ?> ###### 引用来自“Infinity”的评论首先,不论是PHP还是JS都不能修改客户端的文件。 你可以在客户端用JS修改XML数据,注意是数据,再传到服务器端用PHP保存成文档。 谢谢~"
montos 2020-06-04 13:24:13 0 浏览量 回答数 0

回答

Re提示:备案信息提交后5个工作日内未收到接入商所提交真实性核验材料 我待会直播与客服的聊天记录,看阿里云是怎么服务客户的! ------------------------- Re提示:备案信息提交后5个工作日内未收到接入商所提交真实性核验材料 您好,备案指导手册在“右框”,请先点击查看,很详细哦~~08-16 09:56 刚刚断掉了08-16 09:56 上个厕所就给我断掉干嘛08-16 09:57 在吗08-16 09:59 具体能再告诉我下不08-16 09:59 我是刚刚说那个备案不通过的那位08-16 09:59 备案信息提交后5个工作日内未收到接入商所提交真实性核验材料,请确认核验材料成功上传后提交备案信息。08-16 09:59 这个信息被驳回了08-16 09:59 你刚刚是说需要什么??08-16 10:00 您核验号发我下吧08-16 10:01 好的  我找找08-16 10:01 核验号是什么08-16 10:02 我在备案信息没找到呀08-16 10:02 只有接入ID  和面签号08-16 10:02 面签号08-16 10:04 91490008-16 10:04 好的 已请同事将结果反馈到您的后台08-16 10:06 我是要重新备案?08-16 10:06 我的后台  是只备案系统的后台  阿里云的后台08-16 10:07 备案后台08-16 10:07 另外我要知道为什么会出现这种错误?是你们备案客服的原因?08-16 10:08 您的材料现在寄出了吗08-16 10:08 我是去面对面核实的08-16 10:09 问了万网的客服说去了哪里就不需要邮寄任何资料08-16 10:09 只需等待通过就可以08-16 10:09 914900  客户的备案信息现在还是管局审核失败的状态,需要客户重新提交备案信息08-16 10:10 即可处理08-16 10:10 我看后台没有重新提交的选项08-16 10:11 当前备案状态:申请接入管局审核失败 您在阿里云提交的申请接入信息通管局失败,请您修改后重新提交。 驳回原因: 备案信息提交后5个工作日内未收到接入商所提交真实性核验材料,请确认核验材料成功上传后提交备案信息。08-16 10:11 另外我要知道为什么5个工作日 管局没收到资料08-16 10:11 以及我现在要怎么做,具体的08-16 10:12 [img]http://img01.taobaocdn.com/tps/i1/T1B5u2XhBhXXXXXXXX-60-60.png[/img] ??08-16 10:14 [img]http://img01.taobaocdn.com/tps/i1/T1B5u2XhBhXXXXXXXX-60-60.png[/img] 没人在08-16 10:19 ------------------------- Re提示:备案信息提交后5个工作日内未收到接入商所提交真实性核验材料 对方就没回复了! ------------------------- 回6楼aliyunwangdan的帖子 914900    是这个   ------------------------- 回9楼aliyunwangdan的帖子 我是要点击删除吗?就这两个连接。浏览是修改不了的。 ------------------------- Re提示:备案信息提交后5个工作日内未收到接入商所提交真实性核验材料    这个是整体的,难道是要我删除了???? ------------------------- 回12楼aliyunwangdan的帖子 已经重新操作了   请提交管局。另外出现这样的原因能给我一个解释吗? ------------------------- 回14楼aliyunwangdan的帖子 我刚刚去看了,还是没提交上去啊。我网站解析已经停了十多天了。估计我那个网站是彻底的废了。。        ------------------------- 回16楼tftaxis的帖子 能挂在阿里上吗??? ------------------------- 回19楼tftaxis的帖子 我的网站原来是有备案的,现在只是转接入呢?也不行 ------------------------- Re提示:备案信息提交后5个工作日内未收到接入商所提交真实性核验材料 嗯   我还是取消了吧   ------------------------- Re提示:备案信息提交后5个工作日内未收到接入商所提交真实性核验材料 OK  明白了  谢谢
ap1366t4u 2019-12-01 23:18:54 0 浏览量 回答数 0

回答

作者:谢科链接:https://www.zhihu.com/question/20899988/answer/24923424来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。“入门”是良好的动机,但是可能作用缓慢。如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习。另外如果说知识体系里的每一个知识点是图里的点,依赖关系是边的话,那么这个图一定不是一个有向无环图。因为学习A的经验可以帮助你学习B。因此,你不需要学习怎么样“入门”,因为这样的“入门”点根本不存在!你需要学习的是怎么样做一个比较大的东西,在这个过程中,你会很快地学会需要学会的东西的。当然,你可以争论说需要先懂python,不然怎么学会python做爬虫呢?但是事实上,你完全可以在做这个爬虫的过程中学习python :D看到前面很多答案都讲的“术”——用什么软件怎么爬,那我就讲讲“道”和“术”吧——爬虫怎么工作以及怎么在python实现。先长话短说summarize一下:你需要学习基本的爬虫工作原理基本的http抓取工具,scrapyBloom Filter: Bloom Filters by Example如果需要大规模网页抓取,你需要学习分布式爬虫的概念。其实没那么玄乎,你只要学会怎样维护一个所有集群机器能够有效分享的分布式队列就好。最简单的实现是python-rq: https://github.com/nvie/rqrq和Scrapy的结合:darkrho/scrapy-redis · GitHub后续处理,网页析取(grangier/python-goose · GitHub),存储(Mongodb)以下是短话长说:说说当初写的一个集群爬下整个豆瓣的经验吧。1)首先你要明白爬虫怎样工作。想象你是一只蜘蛛,现在你被放到了互联“网”上。那么,你需要把所有的网页都看一遍。怎么办呢?没问题呀,你就随便从某个地方开始,比如说人民日报的首页,这个叫initial pages,用$表示吧。在人民日报的首页,你看到那个页面引向的各种链接。于是你很开心地从爬到了“国内新闻”那个页面。太好了,这样你就已经爬完了俩页面(首页和国内新闻)!暂且不用管爬下来的页面怎么处理的,你就想象你把这个页面完完整整抄成了个html放到了你身上。突然你发现, 在国内新闻这个页面上,有一个链接链回“首页”。作为一只聪明的蜘蛛,你肯定知道你不用爬回去的吧,因为你已经看过了啊。所以,你需要用你的脑子,存下你已经看过的页面地址。这样,每次看到一个可能需要爬的新链接,你就先查查你脑子里是不是已经去过这个页面地址。如果去过,那就别去了。好的,理论上如果所有的页面可以从initial page达到的话,那么可以证明你一定可以爬完所有的网页。那么在python里怎么实现呢?很简单import Queueinitial_page = "http://www.renminribao.com"url_queue = Queue.Queue()seen = set()seen.insert(initial_page)url_queue.put(initial_page)while(True): #一直进行直到海枯石烂if url_queue.size()>0: current_url = url_queue.get() #拿出队例中第一个的url store(current_url) #把这个url代表的网页存储好 for next_url in extract_urls(current_url): #提取把这个url里链向的url if next_url not in seen: seen.put(next_url) url_queue.put(next_url) else: break写得已经很伪代码了。所有的爬虫的backbone都在这里,下面分析一下为什么爬虫事实上是个非常复杂的东西——搜索引擎公司通常有一整个团队来维护和开发。2)效率如果你直接加工一下上面的代码直接运行的话,你需要一整年才能爬下整个豆瓣的内容。更别说Google这样的搜索引擎需要爬下全网的内容了。问题出在哪呢?需要爬的网页实在太多太多了,而上面的代码太慢太慢了。设想全网有N个网站,那么分析一下判重的复杂度就是N*log(N),因为所有网页要遍历一次,而每次判重用set的话需要log(N)的复杂度。OK,OK,我知道python的set实现是hash——不过这样还是太慢了,至少内存使用效率不高。通常的判重做法是怎样呢?Bloom Filter. 简单讲它仍然是一种hash的方法,但是它的特点是,它可以使用固定的内存(不随url的数量而增长)以O(1)的效率判定url是否已经在set中。可惜天下没有白吃的午餐,它的唯一问题在于,如果这个url不在set中,BF可以100%确定这个url没有看过。但是如果这个url在set中,它会告诉你:这个url应该已经出现过,不过我有2%的不确定性。注意这里的不确定性在你分配的内存足够大的时候,可以变得很小很少。一个简单的教程:Bloom Filters by Example注意到这个特点,url如果被看过,那么可能以小概率重复看一看(没关系,多看看不会累死)。但是如果没被看过,一定会被看一下(这个很重要,不然我们就要漏掉一些网页了!)。 [IMPORTANT: 此段有问题,请暂时略过]好,现在已经接近处理判重最快的方法了。另外一个瓶颈——你只有一台机器。不管你的带宽有多大,只要你的机器下载网页的速度是瓶颈的话,那么你只有加快这个速度。用一台机子不够的话——用很多台吧!当然,我们假设每台机子都已经进了最大的效率——使用多线程(python的话,多进程吧)。3)集群化抓取爬取豆瓣的时候,我总共用了100多台机器昼夜不停地运行了一个月。想象如果只用一台机子你就得运行100个月了...那么,假设你现在有100台机器可以用,怎么用python实现一个分布式的爬取算法呢?我们把这100台中的99台运算能力较小的机器叫作slave,另外一台较大的机器叫作master,那么回顾上面代码中的url_queue,如果我们能把这个queue放到这台master机器上,所有的slave都可以通过网络跟master联通,每当一个slave完成下载一个网页,就向master请求一个新的网页来抓取。而每次slave新抓到一个网页,就把这个网页上所有的链接送到master的queue里去。同样,bloom filter也放到master上,但是现在master只发送确定没有被访问过的url给slave。Bloom Filter放到master的内存里,而被访问过的url放到运行在master上的Redis里,这样保证所有操作都是O(1)。(至少平摊是O(1),Redis的访问效率见:LINSERT – Redis)考虑如何用python实现:在各台slave上装好scrapy,那么各台机子就变成了一台有抓取能力的slave,在master上装好Redis和rq用作分布式队列。代码于是写成#slave.pycurrent_url = request_from_master()to_send = []for next_url in extract_urls(current_url):to_send.append(next_url) store(current_url);send_to_master(to_send)master.pydistributed_queue = DistributedQueue()bf = BloomFilter()initial_pages = "www.renmingribao.com"while(True):if request == 'GET': if distributed_queue.size()>0: send(distributed_queue.get()) else: break elif request == 'POST': bf.put(request.url) 好的,其实你能想到,有人已经给你写好了你需要的:darkrho/scrapy-redis · GitHub4)展望及后处理虽然上面用很多“简单”,但是真正要实现一个商业规模可用的爬虫并不是一件容易的事。上面的代码用来爬一个整体的网站几乎没有太大的问题。但是如果附加上你需要这些后续处理,比如有效地存储(数据库应该怎样安排)有效地判重(这里指网页判重,咱可不想把人民日报和抄袭它的大民日报都爬一遍)有效地信息抽取(比如怎么样抽取出网页上所有的地址抽取出来,“朝阳区奋进路中华道”),搜索引擎通常不需要存储所有的信息,比如图片我存来干嘛...及时更新(预测这个网页多久会更新一次)
xuning715 2019-12-02 01:10:18 0 浏览量 回答数 0

回答

1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你来控制它咯。 比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿。 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以及百度搜索框,这个过程其实就是用户输入网址之后,经过DNS服务器,找到服务器主机,向服务器发出一个请求,服务器经过解析之后,发送给用户的浏览器 HTML、JS、CSS 等文件,浏览器解析出来,用户便可以看到形形色色的图片了。 因此,用户看到的网页实质是由 HTML 代码构成的,爬虫爬来的便是这些内容,通过分析和过滤这些 HTML 代码,实现对图片、文字等资源的获取。 3.URL的含义 URL,即统一资源定位符,也就是我们说的网址,统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。 URL的格式由三部分组成:①第一部分是协议(或称为服务方式)。②第二部分是存有该资源的主机IP地址(有时也包括端口号)。③第三部分是主机资源的具体地址,如目录和文件名等。爬虫爬取数据时必须要有一个目标的URL才可以获取数据,因此,它是爬虫获取数据的基本依据,准确理解它的含义对爬虫学习有很大帮助。 环境的配置 学习Python,当然少不了环境的配置,最初我用的是Notepad++,不过发现它的提示功能实在是太弱了,于是,在Windows下我用了 PyCharm,在Linux下我用了Eclipse for Python,另外还有几款比较优秀的IDE,大家可以参考这篇文章 学习Python推荐的IDE 。好的开发工具是前进的推进器,希望大家可以找到适合自己的IDE 作者:谢科链接:https://www.zhihu.com/question/20899988/answer/24923424来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 “入门”是良好的动机,但是可能作用缓慢。如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习。另外如果说知识体系里的每一个知识点是图里的点,依赖关系是边的话,那么这个图一定不是一个有向无环图。因为学习A的经验可以帮助你学习B。因此,你不需要学习怎么样“入门”,因为这样的“入门”点根本不存在!你需要学习的是怎么样做一个比较大的东西,在这个过程中,你会很快地学会需要学会的东西的。当然,你可以争论说需要先懂python,不然怎么学会python做爬虫呢?但是事实上,你完全可以在做这个爬虫的过程中学习python :D看到前面很多答案都讲的“术”——用什么软件怎么爬,那我就讲讲“道”和“术”吧——爬虫怎么工作以及怎么在python实现。先长话短说summarize一下:你需要学习基本的爬虫工作原理基本的http抓取工具,scrapyBloom Filter: Bloom Filters by Example如果需要大规模网页抓取,你需要学习分布式爬虫的概念。其实没那么玄乎,你只要学会怎样维护一个所有集群机器能够有效分享的分布式队列就好。最简单的实现是python-rq: https://github.com/nvie/rqrq和Scrapy的结合:darkrho/scrapy-redis · GitHub后续处理,网页析取(grangier/python-goose · GitHub),存储(Mongodb)以下是短话长说:说说当初写的一个集群爬下整个豆瓣的经验吧。1)首先你要明白爬虫怎样工作。想象你是一只蜘蛛,现在你被放到了互联“网”上。那么,你需要把所有的网页都看一遍。怎么办呢?没问题呀,你就随便从某个地方开始,比如说人民日报的首页,这个叫initial pages,用$表示吧。在人民日报的首页,你看到那个页面引向的各种链接。于是你很开心地从爬到了“国内新闻”那个页面。太好了,这样你就已经爬完了俩页面(首页和国内新闻)!暂且不用管爬下来的页面怎么处理的,你就想象你把这个页面完完整整抄成了个html放到了你身上。突然你发现, 在国内新闻这个页面上,有一个链接链回“首页”。作为一只聪明的蜘蛛,你肯定知道你不用爬回去的吧,因为你已经看过了啊。所以,你需要用你的脑子,存下你已经看过的页面地址。这样,每次看到一个可能需要爬的新链接,你就先查查你脑子里是不是已经去过这个页面地址。如果去过,那就别去了。好的,理论上如果所有的页面可以从initial page达到的话,那么可以证明你一定可以爬完所有的网页。那么在python里怎么实现呢?很简单import Queue initial_page = "http://www.renminribao.com" url_queue = Queue.Queue()seen = set() seen.insert(initial_page)url_queue.put(initial_page) while(True): #一直进行直到海枯石烂 if url_queue.size()>0: current_url = url_queue.get() #拿出队例中第一个的url store(current_url) #把这个url代表的网页存储好 for next_url in extract_urls(current_url): #提取把这个url里链向的url if next_url not in seen: seen.put(next_url) url_queue.put(next_url) else: break 写得已经很伪代码了。所有的爬虫的backbone都在这里,下面分析一下为什么爬虫事实上是个非常复杂的东西——搜索引擎公司通常有一整个团队来维护和开发。2)效率如果你直接加工一下上面的代码直接运行的话,你需要一整年才能爬下整个豆瓣的内容。更别说Google这样的搜索引擎需要爬下全网的内容了。问题出在哪呢?需要爬的网页实在太多太多了,而上面的代码太慢太慢了。设想全网有N个网站,那么分析一下判重的复杂度就是N*log(N),因为所有网页要遍历一次,而每次判重用set的话需要log(N)的复杂度。OK,OK,我知道python的set实现是hash——不过这样还是太慢了,至少内存使用效率不高。通常的判重做法是怎样呢?Bloom Filter. 简单讲它仍然是一种hash的方法,但是它的特点是,它可以使用固定的内存(不随url的数量而增长)以O(1)的效率判定url是否已经在set中。可惜天下没有白吃的午餐,它的唯一问题在于,如果这个url不在set中,BF可以100%确定这个url没有看过。但是如果这个url在set中,它会告诉你:这个url应该已经出现过,不过我有2%的不确定性。注意这里的不确定性在你分配的内存足够大的时候,可以变得很小很少。一个简单的教程:Bloom Filters by Example注意到这个特点,url如果被看过,那么可能以小概率重复看一看(没关系,多看看不会累死)。但是如果没被看过,一定会被看一下(这个很重要,不然我们就要漏掉一些网页了!)。 [IMPORTANT: 此段有问题,请暂时略过]好,现在已经接近处理判重最快的方法了。另外一个瓶颈——你只有一台机器。不管你的带宽有多大,只要你的机器下载网页的速度是瓶颈的话,那么你只有加快这个速度。用一台机子不够的话——用很多台吧!当然,我们假设每台机子都已经进了最大的效率——使用多线程(python的话,多进程吧)。3)集群化抓取爬取豆瓣的时候,我总共用了100多台机器昼夜不停地运行了一个月。想象如果只用一台机子你就得运行100个月了...那么,假设你现在有100台机器可以用,怎么用python实现一个分布式的爬取算法呢?我们把这100台中的99台运算能力较小的机器叫作slave,另外一台较大的机器叫作master,那么回顾上面代码中的url_queue,如果我们能把这个queue放到这台master机器上,所有的slave都可以通过网络跟master联通,每当一个slave完成下载一个网页,就向master请求一个新的网页来抓取。而每次slave新抓到一个网页,就把这个网页上所有的链接送到master的queue里去。同样,bloom filter也放到master上,但是现在master只发送确定没有被访问过的url给slave。Bloom Filter放到master的内存里,而被访问过的url放到运行在master上的Redis里,这样保证所有操作都是O(1)。(至少平摊是O(1),Redis的访问效率见:LINSERT – Redis)考虑如何用python实现:在各台slave上装好scrapy,那么各台机子就变成了一台有抓取能力的slave,在master上装好Redis和rq用作分布式队列。代码于是写成#slave.py current_url = request_from_master()to_send = []for next_url in extract_urls(current_url): to_send.append(next_url) store(current_url);send_to_master(to_send) master.py distributed_queue = DistributedQueue()bf = BloomFilter() initial_pages = "www.renmingribao.com" while(True): if request == 'GET': if distributed_queue.size()>0: send(distributed_queue.get()) else: break elif request == 'POST': bf.put(request.url) 好的,其实你能想到,有人已经给你写好了你需要的:darkrho/scrapy-redis · GitHub4)展望及后处理虽然上面用很多“简单”,但是真正要实现一个商业规模可用的爬虫并不是一件容易的事。上面的代码用来爬一个整体的网站几乎没有太大的问题。但是如果附加上你需要这些后续处理,比如有效地存储(数据库应该怎样安排)有效地判重(这里指网页判重,咱可不想把人民日报和抄袭它的大民日报都爬一遍)有效地信息抽取(比如怎么样抽取出网页上所有的地址抽取出来,“朝阳区奋进路中华道”),搜索引擎通常不需要存储所有的信息,比如图片我存来干嘛...及时更新(预测这个网页多久会更新一次)
xuning715 2019-12-02 01:10:40 0 浏览量 回答数 0

云产品推荐

上海奇点人才服务相关的云产品 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 阿里云AIoT 阿里云科技驱动中小企业数字化