msxml3.dll错误,80070005 此问题一般出现在“采集程序”中。没错,本人的采集程序就出现了这样的错误。
方案一、适合对服务器有绝对管理权限者
解决办法:
赋予程序所在文件夹 internet 来宾帐号(IUSR_WEB)可写。
做法:
选择cachefile-属性-安全-添加(IUSR_WEB)-写入
方案二、更改程序(推荐方案)
用Msxml2.ServerXMLHTTP替换掉Microsoft.XMLHTTP
详细:昨天在采集某一个网站的时候,采集程序出错了。
是自写的采集程序。
经过搜索以后,查到一些没有用的结果,后来发现,用Msxml2.ServerXMLHTTP替换掉Msxml2.XMLHTTP,问题成功解决。
以下是分析排错过程。
老是采集一段时间就挂了,指定资源下载失败,或者拒绝访问。
后来直接全部是拒绝访问。
一开始,认为,对方服务器做了防采集设置,比如有时间限制之类的。
于是更改程序,原先是直接获取列表页,然后持续循环获得文章列表。改了采集文件结构,
原来是就一个文件,类,数据库连接,数据处理全部在一个文件里,再采集某一篇文章的时候,后天加了一个时间循环。等待5秒的。代码如下
sTime=Timer()
dTime=Timer()-sTime
do while dTime < 5
dTime=Timer()-sTime
loop
确实是能等待5秒钟,但是很快就发现,这个循环太过消耗CPU资源,一到这个循环,CPU占用率持续100%,于是马上放弃这个方案。
另做了一个文件。只根据文章URL抓取文章的相关内容并写入数据库,写入完毕后输出自动跳转代码。
核心思想就是用了
这是一个定时跳转的代码,相信大家都很熟悉。
我的原理做法就是,用一开始的文件,抓取所有的文章连接地址,以及相关导航代码,保存到数据库中。
然后用新做的抓取文章内容的程序,读取数据库记录,逐条进行采集。
数据库记录中有一个flag标记,tinyint类型,默认是0,采集成功更新为1,失败更新为2
这样,每次从数据库中读取一条未采集的数据,也就是读取flag=0的数据,进行操作。操作完毕等待5秒跳转到自身。
想法跟思路是很好的。文章URL数据库也采集准备好了,一上采集文章具体内容,又出错了。一直是msxml3.dll 错误 ‘80070005’
拒绝访问的错误。
那个郁闷,想开一晚上机器,自动采集,破灭。
今天早上来搜索查询资料,查询到的绝大多数都是无用信息。
基本上都是说权限问题。
msxml3.dll 错误 ””80070005””
拒绝访问。
解决办法:
赋予程序所在文件夹 internet 来宾帐号(IUSR_WEB)可写。
做法:
选择cachefile-属性-安全-添加(IUSR_WEB)-写入
都是这么说的。莫名其妙的,我的是FAT32的不存在NTFS格式的那种安全权限问题,IIS设置也正常,
我的问题是采集一部分就拒绝访问。肯定不是这个问题。
继续搜索,找到另一个方案说是,用Msxml2.XMLHTTP替换掉Microsoft.XMLHTTP,我本来用的就是Msxml2.XMLHTTP的
继续搜索。找到最终解决方案应该是用Msxml2.ServerXMLHTTP
其实有时候问题很显然,但是ASP的错误提示做不到那么详细。比如我自己的网站,知道是因为网络访问超级慢出现的错误,它却给出msxml3.dll出错的提示。木然!
作者归档:admin
网易网友评论:安徽卫视欲删《水浒传》酒戏引网友PS潮(图)
Dreamweaver CS4&CS45重新打开文件关联窗口
第一次打开Dreamweaver ,就会让你选择关联哪些文件,如果这次没有选,似乎就不能再次打开这个窗口进行文件关联了,不过可以通过注册表修改,重新打开文件关联窗口。

打开HKEY_CURRENT_USERSoftwareAdobeDreamweaver CS5Settings,找到initialFileTypeDlg,把它的值修改为“FALSE”,重新打开Dreamweaver,文件关联窗口就会重新出现;
也可以把一下内容复制到一个*.reg文件中,直接导入即可
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareAdobeDreamweaver CS5Settings]
“initialFileTypeDlg”=”FALSE”
以上只适用CS5,如果是CS4,把上面的字段CS5改为CS4即可,其他版本的DW,也可以找类似的注册表值修改。
去掉xhEditor在线编辑器的about按钮
xhEditor编辑器1.17版本
在文件xheditor-1.1.7-zh-cn.min.js 中找到21行 ,去掉,About,即:
o.tools+=”,About”
改成:
o.tools+=””
错误:ASP 0156 : 80004005
今天一客户联系我说使用的网站添加新闻等操作时候突然报错,提示为
答复对象 错误 ‘ASP 0156 : 80004005’
头错
/nanraocheng/news/admin_news_add_save.asp,行146
HTTP头已经写入到客户浏览器。任何 HTTP 头的修改必须在写入页内容之前。
到达现场后调试发现该ASP程序在本机调试错误,上传后即出现改错误,检测后得出结论为缓冲输出的错误,解决方法及原理如下:
原因是
iis5.0 默认使用网页缓存,pws或iis4.0(winnt系统) 默认不使用网页缓存 。
所以<%response.buffer = true%>放在顶部或response.redirect 语句放在任何html语句前面。即在使用Response.Redirect之前不要输出任何客户端(Browse)的 HTML 或 Script!
一般都是在最前面加上 <%response.buffer=true%>
使用ASP的Scripting.Dictionary对象打造完美购物车
一直不习惯用Dictionary,但是有时候却很有用。
Dictionary 对象
Dictionary 对象用于在结对的名称/值中存储信息((等同于键和项目)。Dictionary 对象看似比数组更为简单,然而,Dictionary 对象却是更令人满意的处理关联数据的解决方案。
比较 Dictionary 和数组:
- 键用于识别 Dictionary 对象中的项目
- 无需调用 ReDim 来改变 Dictionary 对象的尺寸
- 当从 Dictionary 删除一个项目时,其余的项目会自动上移
- Dictionary 不是多维,而数组是
- Dictionary 与数组相比,有更多的内建对象
- Dictionary 在频繁地访问随机元素时,比数组工作得更好
- Dictionary 在根据它们的内容定位项目时,比数组工作得更好
Dictionary 对象的属性和方法描述如下:
属性
CompareMode:设置或返回用于在 Dictionary 对象中比较键的比较模式。
Count:返回 Dictionary 对象中键/项目对的数目。
Item:设置或返回 Dictionary 对象中一个项目的值。
Key:为 Dictionary 对象中已有的键值设置新的键值。
方法
Add:向 Dictionary 对象添加新的键/项目对。
Exists:返回一个逻辑值,这个值可指示指定的键是否存在于 Dictionary 对象中。
Items:返回 Dictionary 对象中所有项目的一个数组。
Keys:返回 Dictionary 对象中所有键的一个数组。
Remove:从 Dictionary 对象中删除指定的键/项目对。
RemoveAll:删除 Dictionary 对象中所有的键/项目对。
<%
Dim oDic,aItems,aKeys
Set oDic = Server.CreateObject("Scripting.Dictionary") '添加
oDic.Add "aaa",111
oDic.Add "bbb",222
oDic.Add "ccc",333
oDic.Add "ddd",444 '修改
If oDic.Exists("aaa") Then
oDic.key("aaa") = "eee" 'key属性,只读
oDic.item("eee") = 555 'item属性,可读写
End If '列表
aKeys = oDic.Keys
aItems = oDic.Items
For i=0 To oDic.Count-1
Response.Write(aKeys(i) & "," & aItems(i))
Next '删除
Response.Write(oDic.Count)
oDic.Remove("eee") '从 Dictionary 对象中删除键和项目对
Response.Write(oDic.Count)
oDic.RemoveAll() '删除 Dictionary 对象中的所有键和项目对
Response.Write(oDic.Count)
Set oDic = Nothing
%>
购物车具体用法:
1、为客户建立购物车,名为shop
set session(“shop”)= CreateObject(“Scripting.Dictionary”)
2、检查客户当前购物车商品个数
session(“shop”).count=0
如果为0,那么自然表示购物车现在是空的
3、客户订购某一商品
session(“shop”).add id,num
id表示数据库中商品的ID或编号等,num表示客户订购此商品的
个数
4、客户查看购物车列表(客户确认当前已购买了的商品列表)
id=session(“shop”).keys
num=session(“shop”).items
以上2句均返回的是数组型数据,分别付给id(商品ID组)和num(
商品数量组)这2个变量
聪明的你马上就会想到只要通过循环把它们一一对应起来就OK了:
for i=0 to session(“shop”).count-1
…id(i)
…这里可以结构操作数据库把商品的信息取出来,通过操作商品编
号数组id(i)
do while not rs.eof
…num(i)
…然后循环结果集,使价格等与商品对应,通过操作商品个数数组
num(i)
rs.movenext
loop
next
数组的下标是从0开始,所以要count-1哦
这部可能有点乱,不过如果你有点经验的话应该是很容易读懂的。
5、客户更改某一商品的订购数量
session(“shop”)(id)=num
太简单了,我不多解释了。
6、客户删除某一商品
session(“shop”).remove(id)
7、客户清空购物车
session(“shop”).removeall
MySql的常用Engine
MyISAM:它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.与其他存储引擎比较,MyISAM具有检查和修复表格的大多数工具. MyISAM表格可以被压缩,而且它们支持全文搜索.它们不是事务安全的,而且也不支持外键。如果事物回滚将造成不完全回滚,不具有原子性。如果执行大量的SELECT,MyISAM是更好的选择。
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
对于支持事物的InnoDB类型的标,影响速度的主要原因是AUTOCOMMIT默认设置是打开的,而且程序没有显式调用BEGIN 开始事务,导致每插入一条都自动Commit,严重影响了速度。可以在执行sql前调用begin,多条sql形成一个事物(即使autocommit打开也可以),将大大提高性能。
MySQL检查表是否存在
1. SHOW TABLES LIKE ‘%tb_bp_d_case%’;
2. select `TABLE_NAME` from `INFORMATION_SCHEMA`.`TABLES` where `TABLE_SCHEMA`=’dbname’ and `TABLE_NAME`=’tablename’ ;
3. 如果表不存在就建立这个表,那么可以直接用 create table if not exists tablename 这样的指令来建立,不需要先去查询表是否存
4. 从模板表创建表:create table if not exists like old_table_name;
--
-- 表的结构 `iweb_admin`
--
DROP TABLE IF EXISTS `iweb_admin`;
CREATE TABLE `iweb_admin` (
`id` int(11) NOT NULL auto_increment COMMENT '管理员ID',
`admin_name` varchar(20) NOT NULL COMMENT '用户名',
`password` varchar(32) NOT NULL COMMENT '密码',
`role_id` int(11) NOT NULL COMMENT '角色ID',
`create_time` datetime default NULL COMMENT '创建时间',
`email` varchar(255) default NULL COMMENT 'Email',
`last_ip` varchar(30) default NULL COMMENT '最后登录IP',
`last_time` datetime default NULL COMMENT '最后登录时间',
`is_del` tinyint(1) NOT NULL default '0' COMMENT '删除状态 1删除,0正常',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员用户表';
smarty3.0.7官网下载的demo运行报错 /*%%SmartyNocache: 221334da460b2356f10-15165135%%*//*/%
错误提示里面显示有>等符号,猜测是编码问题,新建一个UTF-8文档拷贝之前文档的内容进去,重新运行就OK了。
还不错的Js模拟弹出框
直接把代码都Copy下来运行一下
<script language="javascript">
function getPosition() {
var top = document.documentElement.scrollTop;
var left = document.documentElement.scrollLeft;
var height = document.documentElement.clientHeight;
var width = document.documentElement.clientWidth;
return {top:top,left:left,height:height,width:width};
}
function showPop(){
var width = 300; //弹出框的宽度
var height = 160; //弹出框的高度
var obj = document.getElementById("pop");
obj.style.display = "block";
obj.style.position = "absolute";
obj.style.zindex = "999";
obj.style.width = width + "px";
obj.style.height = height + "px";
var Position = getPosition();
leftadd = (Position.width-width)/2;
topadd = (Position.height-height)/2;
obj.style.top = (Position.top + topadd) + "px";
obj.style.left = (Position.left + leftadd) + "px";
window.onscroll = function (){
var Position = getPosition();
obj.style.top = (Position.top + topadd) +"px";
obj.style.left = (Position.left + leftadd) +"px";
};
}
function hidePop(){
document.getElementById("pop").style.display = "none";
}
</script>
