PHP程序员的工资低呀,特别是应届毕业生的工资!才一千多元,没法活了。一天看N小时代码,加班是常事!看得眼花,看得脑胀。
搞得对PHP有看法了,为什么.NET的程序员就这么多钱呢?.NET更加傻瓜化,一拉就来,可PHP呢,N多东西要自己写的,代码量太大了,感觉起来没点RAD;公司老板,公司领导根本不关注是不是你写的,更注重的是结果,能够解决某个问题。
PHP程序员的工资低呀,特别是应届毕业生的工资!才一千多元,没法活了。一天看N小时代码,加班是常事!看得眼花,看得脑胀。
搞得对PHP有看法了,为什么.NET的程序员就这么多钱呢?.NET更加傻瓜化,一拉就来,可PHP呢,N多东西要自己写的,代码量太大了,感觉起来没点RAD;公司老板,公司领导根本不关注是不是你写的,更注重的是结果,能够解决某个问题。
年初七,就坐车下深圳了,踏上找工作之路,前面有什么困难等我去面对、解决?深圳这么一座动感、活力、年轻的城市,吸引无数人。
来到深圳住在一个朋友的员工宿舍里,有一台电脑可以上网,就疯狂得在cjol.com 51job.com zhaopin.com投简历,投了几十份,过了几天怎么还没有消息的呢,心里急呀!找工作有一个周期,看简历一个星期,面试安排一个星期。所以等上一个星期是正常的,等到第九天后,就有面试通知过来。
我是应届毕业生,找工作很尴尬,又还没有毕业,工作经验又没,对深圳又不熟悉……,一大堆的理由,一大堆的挑剔。渐渐变得失落了,丧失原有信心,是自己一下子的要求太高了,还是自己的能力太差了。难道我们没工作经验就是最大的问题吗?公司不爱培训人,要招聘者直接上岗,直接进入工作状态。
2月底找到一份工,工作11小时,疯了!真不知道要《劳动法》来干吗的,制定的员工手册没点符合《劳动法》要求,公司刚起步也不能这样的,第一次体会到资本家的贪婪:少拿工资,多做事;吃得少,做得多;理想状态是24小时工作,不用休息。
/* SESSION 设置 */
SESSION_NAME=’ThinkID’
默认 Session_name 如果需要不同项目共享 SESSION 可以设置相同
SESSION_PATH=”
采用默认的Session save path
SESSION_TYPE=’File’
默认 Session 类型 支持 DB 和 File
SESSION_EXPIRE=’300000′
默认 Session 有效期
SESSION_TABLE=’think_session’
数据库 Session 方式表名
SESSION_CALLBACK=”
反序列化对象的回调方法
/* 数据库设置 */
DB_CHARSET=’utf8′
数据库编码默认采用utf8
DB_DEPLOY_TYPE=0
数据库部署方式 0 集中式(单一服务器) 1 分布式(主从服务器)
DB_CACHE_ON=false
默认关闭数据库缓存
DB_CACHE_TIME=60
数据库缓存有效期
DB_CACHE_MAX=5000
数据库缓存最多记录
SQL_DEBUG_LOG=false
记录 SQL 语句到日志文件
/* 数据缓存设置 */
DATA_CACHE_ON=false
默认关闭数据缓存
DATA_CACHE_TIME=1
数据缓存有效期
DATA_CACHE_MAX=5000
数据缓存最多记录
DATA_CACHE_COMPRESS=false
数据缓存是否压缩缓存
DATA_CACHE_CHECK=false
数据缓存是否校验缓存
DATA_CACHE_TYPE=’File’
数据缓存类型 支持 File Db Apc Memcache Shmop Sqlite Xcache Apachenote Eaccelerator
DATA_CACHE_TABLE=’think_cache’
数据缓存表 当使用数据库缓存方式时有效
CACHE_SERIAL_HEADER="<?php\n//"
文件缓存开始标记,当缓存方式为 File 有效
CACHE_SERIAL_FOOTER="\n?".">"
文件缓存结束标记,当缓存方式为 File 有效
SHARE_MEM_SIZE=1048576
共享内存分配大小,当缓存方式为Shmop 有效
/* 运行时间设置 */
SHOW_RUN_TIME=false
运行时间显示
SHOW_ADV_TIME=false
显示详细的运行时间
SHOW_DB_TIMES=false
显示数据库查询和写入次数
SHOW_CACHE_TIMES=false
显示缓存操作次数
SHOW_USE_MEM=false
显示内存开销
SHOW_PAGE_TRACE=false
显示页面Trace 信息 由Trace 文件定义和 Action 操作赋值
/* 模板引擎设置 */
TMPL_ENGINE_TYPE=’Think’
默认模板引擎 以下设置仅对使用 Think 模板引擎有效
TMPL_DENY_FUNC_LIST=’echo,exit’
模板引擎禁用函数
TMPL_L_DELIM=’{’
模板引擎普通标签开始标记
TMPL_R_DELIM=’}’
模板引擎普通标签结束标记
TAGLIB_BEGIN=’<’
标签库标签开始标记
TAGLIB_END=’>’
标签库标签结束标记
/* Cookie 设置 */
COOKIE_EXPIRE=3600
Coodie 有效期
COOKIE_DOMAIN=”
Cookie 有效域名
COOKIE_PATH=’/’
Cookie 路径
COOKIE_PREFIX=’THINK_’
Cookie 前缀 避免冲突
/* 分页设置 */
PAGE_NUMBERS=5
分页显示页数
LIST_NUMBERS=20
分页每页显示记录数
/* 数据格式设置 */
AJAX_RETURN_TYPE=’JSON’
AJAX 数据返回格式 JSON XML …
DATA_RESULT_TYPE=0
默认数据返回格式 1 对象 0 数组
/* 其它设置 */
AUTO_LOAD_PATH=’Think.Util.’
__autoLoad 的路径设置 当前项目的 Model 和 Action 类会自动加载,无需设置 注意搜索顺序
CALLBACK_LOAD_PATH=”
反序列化对象时自动加载的路径设置
UPLOAD_FILE_RULE=’uniqid’
文件上传命名规则,例如 time 、uniqid 、com_create_guid 等, 支持自定义函数, 仅适用于内
置的 UploadFile 类
LIKE_MATCH_FIELDS=’title|content|value|remark|company|address’
数据库查询的时候需要进行模糊匹配的字段,当对包含这些字段的数据表进行查询的时候,会自动
使用 LIKE ‘%value%’ 方式的模糊查询
配置参数
这里列出了系统内置的惯例配置中的配置参数,所有参数在没有生效之前都可以在项目配置文件或者
模块配置文件中被覆盖,这里只是列出了默认的惯例设置,并不代表你的应用设置。
DISPATCH_ON=true
是否启用 Dispatcher
DISPATCH_NAME =’Think’
默认的 Dispatcher 名称
URL_MODEL=1
URL 模式: 0 普通模式 1 PATHINFO 2 REWRITE
默认为 PATHINFO 模式,提供最好的用户体验和SEO 支持
PATH_MODEL=2
// PATHINFO 模式
// 普通模式 1 参数没有顺序/m/module/a/action/id/1
// 智能模式 2 自动识别模块和操作/module/action/id/1/ 或者 /module,action,id,1/…
默认采用智能模式
PATH_DEPR=’/’
PATHINFO 参数之间分割号
ROUTER_ON=true
启用路由判断
/* 日志设置 */
WEB_LOG_RECORD=false
默认不记录日志
LOG_FILE_SIZE=2097152
日志文件大小限制
/* 插件设置 */
THINK_PLUGIN_ON=false
默认不启用插件机制
/* 防刷新设置 */
LIMIT_RESFLESH_ON=false
默认关闭防刷新机制
LIMIT_REFLESH_TIMES=3
页面防刷新时间 默认 3 秒
/* 错误设置 */
DEBUG_MODE=false
调试模式默认关闭
ERROR_MESSAGE=’您浏览的页面暂时发生了错误!请稍后在试~’
错误显示信息 非调试模式有效
ERROR_PAGE=”
错误定向页面
/* 系统变量设置 */
VAR_PATHINFO=’s’
PATHINFO 兼容模式获取变量例如 ?s=/module/action/id/1 后面的参数取决于 PATH_MODEL 和
PATH_DEPR
VAR_MODULE=’m’
默认模块获取变量
VAR_ACTION=’a’
默认操作获取变量
VAR_ROUTER=’r’
默认路由获取变量
VAR_FILE=’f’
默认文件变量
VAR_PAGE=’p’
默认分页跳转变量
VAR_LANGUAGE=’l’
默认语言切换变量
VAR_TEMPLATE=’t’
默认模板切换变量
VAR_AJAX_SUBMIT=’ajax’
默认的 AJAX 提交变量
/* 模块和操作设置 */
DEFAULT_MODULE=’Index’
默认模块名称
DEFAULT_ACTION=’index’
默认操作名称
/* 模板设置 */
TMPL_CACHE_ON=true
默认开启模板缓存
TMPL_CACHE_TIME=1
模板缓存有效期 1
永久 单位为秒
DEFAULT_TEMPLATE=’default’
默认模板风格名称
TEMPLATE_SUFFIX=’.html’
默认模板文件后缀
CACHFILE_SUFFIX=’.php’
默认模板缓存后缀
TEMPLATE_CHARSET=’utf8′
模板模板编码
OUTPUT_CHARSET=’utf8′
默认输出编码
/* 模型设置 */
CONTR_CLASS_PREFIX=”
控制器类名前缀
CONTR_CLASS_SUFFIX=’Action’
控制器类名后缀,默认为 Action
ACTION_PREFIX=”
操作方法前缀
ACTION_SUFFIX=”
操作方法后缀
MODEL_CLASS_PREFIX=”
模型类前缀
MODEL_CLASS_SUFFIX=’Model’
模型类后缀,默认为Model
/* 静态缓存设置 */
HTML_FILE_SUFFIX=’.shtml’
默认静态文件后缀
HTML_CACHE_ON=false
默认关闭静态缓存
HTML_CACHE_TIME=60
静态缓存有效期
HTML_READ_TYPE=1
静态缓存读取方式 0 readfile 1 redirect
HTML_URL_SUFFIX=’.shtml’
伪静态后缀设置
/* 语言时区设置 */
DEFAULT_LANGUAGE=’zhcn’
默认语言
TIME_ZONE=’PRC’
默认时区
/* 用户认证设置 */
USER_AUTH_ON=false
默认不启用用户认证
USER_AUTH_TYPE=1
默认认证类型 1 登录认证 2 实时认证
USER_AUTH_KEY=’authId’
用户认证SESSION 标记
AUTH_PWD_ENCODER=’md5′
用户认证密码加密方式
USER_AUTH_PROVIDER=’DaoAuthentictionProvider’
默认认证委托器
USER_AUTH_GATEWAY=’/Public/login’
默认认证网关
NOT_AUTH_MODULE=’Public’
默认无需认证模块
REQUIRE_AUTH_MODULE=”
默认需要认证模块
系统常量
THINK_PATH // ThinkPHP 系统目录
APP_PATH // 当前项目目录
APP_NAME // 当前项目名称
MODULE_NAME //当前模块名称
ACTION_NAME // 当前操作名称
TMPL_PATH // 项目模版目录
LIB_PATH // 项目类库目录
CACHE_PATH // 项目模版缓存目录
CONFIG_PATH //项目配置文件目录
LOG_PATH // 项目日志文件目录
LANG_PATH // 项目语言文件目录
TEMP_PATH //项目临时文件目录
PLUGIN_PATH // 项目插件文件目录
VENDOR_PATH // 第三方类库目录
DATA_PATH // 项目数据文件目录
IS_APACHE // 是否属于 Apache
IS_IIS //是否属于 IIS
IS_WIN //是否属于Windows 环境
IS_LINUX //是否属于 Linux 环境
IS_FREEBSD //是否属于 FreeBsd 环境
NOW_TIME // 当前时间戳
MEMORY_LIMIT_ON // 是否有内存使用限制
MEMORY_LIMIT_ON // 是否有内存使用限制
OUTPUT_GZIP_ON // 是否开启输出压缩
MAGIC_QUOTES_GPC // MAGIC_QUOTES_GPC
THINK_VERSION //ThinkPHP 版本号
LANG_SET // 浏览器语言
TEMPLATE_NAME //当前模版名称
TEMPLATE_PATH //当前模版路径
__ROOT__ // 网站根目录地址
__APP__ // 当前项目(入口文件)地址
__URL__ // 当前模块地址
__ACTION__ // 当前操作地址
__SELF__ // 当前 URL 地址
TMPL_FILE_NAME //当前操作的默认模版名(含路径)
WEB_PUBLIC_URL //网站公共目录
APP_PUBLIC_URL //项目公共模版目录
预定义常量
WEB_LOG_ERROR=0 // 错误日志类型
WEB_LOG_DEBUG=1 // 调试日志类型
SQL_LOG_DEBUG=2 // SQL 日志类型
SYSTEM_LOG=0 // 系统方式记录日志
MAIL_LOG=1 // 邮件方式记录日志
TCP_LOG=2 // TCP 方式记录日志
FILE_LOG=3 // 文件方式记录日志
DATA_TYPE_OBJ=1 // 对象方式返回
DATA_TYPE_ARRAY=0 // 数组方式返回
URL_COMMON=0 // 普通模式 URL
URL_PATHINFO=1 // PATHINFO URL
URL_REWRITE=2 // REWRITE URL
HAS_ONE=1 // HAS_ONE 关联定义
BELONGS_TO=2 // BELONGS_TO 关联定义
HAS_MANY=3 // HAS_MANY 关联定义
MANY_TO_MANY=4 // MANY_TO_MANY 关联定义
EXISTS_TO_VAILIDATE = 0 // 表单存在字段则验证
MUST_TO_VALIDATE = 1 // 必须验证
VALUE_TO_VAILIDATE = 2 // 表单值不为空则验证
ThinkPHP是一款优秀国产框架!目前处于学习阶段,使用起来很顺手,架构思路与平常开发思路相符,还有对数据操作非常方便,主要将数据字段在表单里一一对应起来,数据自动插入到数据库中。其中update有点郁闷,一开始没有搞懂,走了不少弯路的,关键要放个隐藏域(保存主键ID,用于数据库记录更新)。
ThinkPHP模板思想主要借鉴了JAVA Struts标签技术,目前内置了四个标签库,常用的有HTML,CX两个。
ThinkPHP用户权限组件,仍在探索中,希望官方多出一点实例出来。在开发过程中,用户权限是最重要,系统都基于用户。
对网站进行优化的成败及最终效果取决于搜索引擎如何看待我们的工作。如果在优化过程中不遵循基本的SEO原则,那么,无论付出多大都不会取得意想中的效果:如果我们所做的一切并没有被搜索引擎“看”到,我们的网站在搜索页面中的排名怎么会靠前呢?
什么是Spider
Spider是搜索引擎用来访问Internet上网页的自动程序(即通常意义上的Robots)。一般说来,不同搜索引擎的Spider的功能与手段大致相同,它们都用来在网站内“爬行”,读取Web页面,将其纳入搜索引擎的索引数据,在此基础上,搜索引擎才能依据各自的算法决定索引数据库中网页的相关性、排名等,当然,不同的搜索引擎采用不同的算法,索引网站的具体技术也各有特征,不过,我们今天要讨论的重点是Spider对什么感兴趣,哪些又是Spider所忽略的——毕竟spider决定别人是否能够发现我们的网页——了解了这些,我们才能更有针对性地设计、改进我们的网页。
从根本上说,正因为搜索引擎的 spiders 只是“程序”,这就决定了其不可能象人那样去读相应的网页,比如说,象图片、Flash、JavaScript等可以对人视觉有很大冲击的设计对Spider来说则是“不可见的”,它们只认识特定的标识。这就需要我们针对Spider的“好恶”来调整网页的设计。
Flash、JavaScript、图片与框架
对spider来说,Flash、JavaScript、与图片中的文本是不可见的,框架在很多时候对 SEO来说则更是一场灾难。也许上述的元素可以让我们的页面更漂亮更吸引人,但对搜索引擎来说则是另一回事。至于在某些图形设计者网站常见的使用Flash首页的情况更要命,在那些页面中,关键词与链接均被嵌入在flash中,这根本不能被搜索引擎解读嘛,搜索引擎在这样的页面上几乎看不到任何感兴趣的东西,这还谈什么搜索结果排名?
事实上,Spider读取页面的方式类似于“古老”的文本浏览器,它们看不到文本之外的其他内容,所以,图片中的文字对Spider来说毫无意义。对于网页中必须使用的图片与Flash,可以采用在其的alt属性中加入对图片的描述,当然,在描述中要注意不要过度使用关键词,不然又走向了另一个极端即“关键词填充”。
链接
很多网站在链接中使用javascript如mouse over事件来实现很华丽的效果,但这样的链接Spider往往不能有效地解读而被忽略,这就造成了Spider在网站内“爬行”的中止。对这类问题的解决办法是加上<noscript>标签,把相应的链接添加到 <noscript> 语句中。
动态页面
动态生成的网页,尤其是使用类似于“?id=14”的页面,对 spiders 来说也是很难理解的,虽然大多数搜索引擎一直在着力解决这个问题,但在很多情况下仍不能象静态网页那样对spider更友善。如果条件允许的话,可以通过采用相应的url Rewrite技术来说spider认为那是一个静态网页,缩小其阅读的难度。
为确保无误,在网页设计好后,可以使用spider模拟器来检查一下Spider眼中我们的网页是什么样子的,是不是与我们设计的初衷有所偏离。类似的spider模拟器网上很多,如这个。毕竟,只有在保证我们的网页能够被搜索引擎正常收录的条件下,谈搜索引擎排名的优化才有意义。
1、PHPdig是国外非常流行的垂直搜索引擎产品(与其说是产品,不如说是一项区别于传统搜索引擎的搜索技术),采用PHP语言编写,利用了PHP程序运行的高效性,极大地提高了搜索反应速度,它可以像Google或者Baidu以及其它搜索引擎一样搜索互联网,搜索内容除了普通的网页外还包括txt, doc, xls, pdf等各式的文件,具有强大的内容搜索和文件解析功能。
2、Sphider is a lightweight web spider and search engine written in PHP, using MySQL as its back end database. It is a great tool for adding search functionality to your web site or building your custom search engine. Sphider is small, easy to set up and modify, and is used in thousands of websites across the world.
Sphider supports all standard search options, but also includes a plethora of advanced features such as word autocompletion, spelling suggestions etc. The sophisticated adminstration interface makes administering the system easy. The full list of Sphider features can be seen in the about section; also be sure to check out the demo and take a look at the showcase, displaying some sites running Sphider. If you run into problems, you can probably get an answer to your question in the forum.
3、iSearch
The iSearch PHP search engine allows you to build a searchable database for your web site. Visitors can search for key words and a list of any pages that match is returned to them.
Introduction
iSearch is a tool for allowing visitors to a website to perform a search on the contents of the site. Unlike other such tools the spidering engine is written in PHP, so it does not require binaries to be run on the server to generate the search index for HTML pages.
http://www.webconfs.com/search-engine-spider-simulator.php
模拟真实的搜索引擎抓取网页!!
接触SEO已经两个多星期了,也建立起相关的网站进行SEO学习(SEO实践性非常强),感觉起来还是蛮不错的。看着网站选择的关键字,排到了某一搜索引擎第一名时,真是太兴奋了!
学SEO,相继看了不下15本书,其中包括中文、英文。刚看完第一本时,感觉还是蛮新鲜,蛮有意思。看完第三本时,一种厌恶情绪就出来了,怎么都是一个鬼样的。都是在meta元素,说域名,说主机,外部链接,内部链接,网页静态化……
由于本人是学PHP,对HTML,CSS,JS,PHP有一定的了解,对SEO的书非常乏味。为什么就没有人去拿一个开源网络爬虫来研究呢?如今开源网络爬虫(JAVA,PHP)已经有很多个开源,其中JAVA开源网络爬虫居多,目前据本人所知,PHP开源网络爬虫有三个。