导航

随笔分类 -  编程开发 - PHP

摘要:Drupal在数据库启动阶段仅仅是简单地包含了database.inc文件,然后再注册类加载器:function _drupal_bootstrap_database() { // Initialize the database system. Note that the connection // won't be initialized until it is actually requested. require_once DRUPAL_ROOT . '/includes/database/database.inc'; // Register autoload f 阅读全文

posted @ 2013-10-11 16:02 eastson 阅读(250) 评论(0) 推荐(0)

摘要:Drupal有时会显示白屏,或者500内部错误,这多半是由于PHP脚本什么地方有问题造成的。这个时候,可以先看看php.log里面有没有提示:[10-Oct-2013 15:55:26 Asia/Shanghai] PHP Fatal error: Call to undefined function xxxxxx() in C:\Program Files\Zend\Apache2\htdocs\drupal\index.php on line 24也可以将display_errors选项开启,使php将所有的信息都显示出来:error_reporting(E_ALL);ini_set(&# 阅读全文

posted @ 2013-10-10 16:03 eastson 阅读(454) 评论(0) 推荐(0)

摘要:ZendServer根据开发环境和产品环境的不同情况,对php.ini中的一些选项做了建议设置,列表如下:;;;;;;;;;;;;;;;;;;;; Quick Reference ;;;;;;;;;;;;;;;;;;;;; The following are all the settings which are different in either the production; or development versions of the INIs with respect to PHP's default behavior.; Please see the actual sett 阅读全文

posted @ 2013-10-10 15:38 eastson 阅读(427) 评论(0) 推荐(0)

摘要:Drupal在配置阶段的最开始就设置了自己的错误处理器和异常处理器:function _drupal_bootstrap_configuration() { set_error_handler('_drupal_error_handler'); set_exception_handler('_drupal_exception_handler'); // ... ...}先来看看错误处理器_drupal_error_handler()是如何做的?function _drupal_error_handler($error_level, $message, $file 阅读全文

posted @ 2013-10-10 11:48 eastson 阅读(1306) 评论(0) 推荐(0)

摘要:什么意思?意思是说,假如你有这样的需求,需要将cache_page缓存到数据库,其它的都缓存到memcache,这该怎么办?看看_cache_get_object()的实现你就会知道上面的问题该怎么处理了:function _cache_get_object($bin) { static $cache_objects; if (!isset($cache_objects[$bin])) { $class = variable_get('cache_class_' . $bin); if (!isset($class)) { $class = variable_get(... 阅读全文

posted @ 2013-10-09 14:18 eastson 阅读(275) 评论(0) 推荐(0)

摘要:Drupal许多的函数中都使用了静态变量。按照通常的用法,静态变量的使用应该是这样的:function drupal_set_title($title = NULL) { static $stored_title; if (isset($title)) { $stored_title = $title; } return $stored_title;}但是Drupal使用的方式有些不同。主要的考量应该是这样:可能会有几十上百个函数中使用了静态变量,Drupal需要在某一时刻对这些静态变量都做reset处理。这个时候,不可能对这几十上百个函数都重新调用一次。因此,Drupal需要一... 阅读全文

posted @ 2013-10-09 11:20 eastson 阅读(296) 评论(0) 推荐(0)

摘要:页面缓存是什么意思?有些页面浏览量非常大,而且与状态无关,这类页面就可以使用页面缓存技术。在页面第一次请求完毕以后,将响应结果保存起来。下一次再请求同一页面时,就不需要从头到尾再执行一遍,只需要将第一次执行的响应结果获取出来,直接返回给使用者就行了。什么样的页面请求可以缓存?Drupal使用函数drupal_page_is_cacheable()区分哪些请求可以缓存:function drupal_page_is_cacheable($allow_caching = NULL) { $allow_caching_static = &drupal_static(__FUNCTION__, 阅读全文

posted @ 2013-10-08 16:55 eastson 阅读(998) 评论(0) 推荐(0)

摘要:配置是Drupal启动过程中的第一个阶段,通过函数_drupal_bootstrap_configuration()实现:function _drupal_bootstrap_configuration() { set_error_handler('_drupal_error_handler'); set_exception_handler('_drupal_exception_handler'); drupal_environment_initialize(); timer_start('page'); drupal_settings_init 阅读全文

posted @ 2013-10-08 11:19 eastson 阅读(599) 评论(0) 推荐(0)

摘要:Drupal的后台数据库中有很多以cache开头的表,这些都是Drupal的缓存数据表。Drupal的缓存机制使用了接口方式,所有的缓存对象都必须实现DrupalCacheInterface接口:interface DrupalCacheInterface { function get($cid); function getMultiple(&$cids); function set($cid, $data, $expire = CACHE_PERMANENT); function clear($cid = NULL, $wildcard = FALSE); function isE. 阅读全文

posted @ 2013-10-07 16:03 eastson 阅读(619) 评论(0) 推荐(0)

摘要:Drupal的系统变量都保存在数据库variable表中:然后,开发人员可以通过下面的API函数操作这些系统变量:function variable_get($name, $default = NULL) { global $conf; return isset($conf[$name]) ? $conf[$name] : $default;}function variable_set($name, $value) { global $conf; db_merge('variable')->key(array('name' => $name))-&g 阅读全文

posted @ 2013-10-07 15:47 eastson 阅读(310) 评论(0) 推荐(0)

摘要:1. 下载:http://simpletest.org/。2.下载后,只要测试文件中包含如下两个文件,就可以用了 : 3. 比如测试一个界面:get('http://www.example.com/contact.php'); $this->assertResponse(200); } } ?> 还可以测试表单的提交动作:function testIsProperFormSubmissionSuccessful() { $this->get('http://www.example.com/contact.php'); $this->ass 阅读全文

posted @ 2013-10-04 16:44 eastson 阅读(431) 评论(0) 推荐(0)

摘要:Drupal使用称之为“placeholder”的方式处理SQL查询参数: 'page',));// CORRECT:$result = db_query("SELECT nid, title FROM {node} WHERE type = :type", array( ':type' => 'page',));?>数组参数主要是应用于IN查询的环境: array(13, 42, 144));// Will get turned into this prepared statement equivalent au 阅读全文

posted @ 2013-09-26 16:28 eastson 阅读(257) 评论(0) 推荐(0)

摘要:Drupal的数据库连接信息通过文件settings.php中的变量$databases设置。变量$databases是一个二维的数组,第一维称为key,第二维称为target。使用这种方式可以处理多数据库和主从分离这样复杂的情况。例如,假设有这样的配置:$databases['default']['default'] = array( 'database' => 'drupal',);$databases['default']['slave1'] = array( 'database 阅读全文

posted @ 2013-09-24 09:56 eastson 阅读(738) 评论(0) 推荐(0)

摘要:1 /** 2 * Passes alterable variables to specific hook_TYPE_alter() implementations. 3 * 4 * This dispatch function hands off the passed-in variables to type-specific 5 * hook_TYPE_alter() implementations in modules. It ensures a consistent 6 * interface for all altering operations. 7 *... 阅读全文

posted @ 2013-08-13 14:53 eastson 阅读(825) 评论(0) 推荐(0)

摘要:WindowsAfter you have downloaded and installed PHP, you have to manually execute the batch file located in e.g.c:\php\go-pear.bat. The setup will ask you some questions and afterwards the PEAR Package Manager will be installed in the path, which you have specified during installation.Finally you hav 阅读全文

posted @ 2013-08-09 14:48 eastson 阅读(156) 评论(0) 推荐(0)

摘要:PHPMailer是一个用于发送电子邮件的PHP函数包。它提供的功能包括: *.在发送邮时指定多个收件人,抄送地址,暗送地址和回复地址 *.支持多种邮件编码包括:8bit,base64,binary和quoted-printable *.支持SMTP验证 *.支持冗余SMTP服务器 *.支持带附件的邮件和Html格式的邮件 *.自定义邮件头 *.支持在邮件中嵌入图片 *.调试灵活 *.经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等 *.可运行在任何平台之上下面是我测试PHPMailer用的例子,使用的是新浪的SM... 阅读全文

posted @ 2013-01-31 14:25 eastson 阅读(362) 评论(0) 推荐(0)

摘要:PclZip是一个强大的压缩与解压缩zip文件的PHP类,PclZiplibrary不仅能够压缩与解压缩Zip格式的文件,还能出压缩档的内容,同时也可以对现有的ZIP包进行添加或删除文件。官方首页:http://www.phpconcept.net/pclzip参考网页:http://www.ccvita.com/59.htmlPclZip简单的例子:<?phprequire_once('includes/pclzip.lib.php');// 压缩: 将data/README.txt文件放到压缩档, 去掉前面的data路径$archive = new PclZip(&# 阅读全文

posted @ 2013-01-31 14:24 eastson 阅读(725) 评论(0) 推荐(0)

摘要:TbsZip是一个PHP的类用来读写Zip压缩文件包,该类无需PHP扩展或者是临时文件。TbsZip可以对压缩文档中的文件进行读、写、修改和删除操作。官方首页:http://www.tinybutstrong.com/apps/tbszip/tbszip_help.html系统附带的演示代码,很详细:<?/* Some code examples for TbsZipSkrol29, 2010-09-03*/include_once('tbszip.php'); // load the TbsZip library$zip = new clsTbsZip(); // cr 阅读全文

posted @ 2013-01-31 14:24 eastson 阅读(443) 评论(0) 推荐(0)

摘要:我经常听到这样一个问题:"我有一个从网站发来的合同。我如何给通过表单发送的电子邮件增加一个附件呢?"首先我要说的是要做到这个没有什么简单的办法。你要很好的理解PHP或其它的服务器端的脚本语言。当然你还要一个真正支持PHP的网站的账号。如果满足了这个前提,在你读完了本章后就可以用PHP发送带附件的电子邮件了。1.附件是如何工作的如果你曾经在PHP的手册中搜索过"附件"函数,那么结果可能是什么都没有(至少在我写本文的时间还没有)。后来你就要花很多时间来了解这方面的知识。你也许会想当你给某个人发送一封带附件的电子邮件时,附件是和邮件一起放到收件人的信箱里的(比 阅读全文

posted @ 2013-01-31 14:22 eastson 阅读(624) 评论(0) 推荐(0)

摘要:<?* 名称:用Socket发送电子邮件 * 描述:本类实现了直接使用需要验证的SMTP服务器直接发送邮件,参考文章《用Socket发送电子邮件》作者:limodou * 此文章比较早,他是用不用验证SMTP服务器发送邮件,现在基本上SMTP服务器都需要验证了,所以这个文章里的类 意义也不是很大!同时参考了[RFC 1869]和PHP手册!!和上文还有不同的是我用的不是fsockopen()函数 具体你自己看吧!!我刚刚测试通过了,很爽!! 其实把这个类再改写一下就可以直接发送带附件的邮件了,期待。。。我过几天给大家写出来! 我刚刚调试通过,如果你不恶意去捉弄这个程序,他还是很听话的,过 阅读全文

posted @ 2013-01-31 14:20 eastson 阅读(237) 评论(0) 推荐(0)