『壹』 如何本地測試網站
買好空間域名,做好關鍵詞分析和選擇,然後你就要選擇合適的網站程序了。
選好網站程序,你還要測試一下,千萬不要輕易上傳到空間進行測試,因為如果這樣的話,一旦搜索引擎收錄了你的網站,你又在不斷地改動的話,那樣會讓搜索引
擎覺得你的網站很不穩定,不值得信任,那就麻煩了。所以,你要測試網站程序,你就要在本地測試了。什麼是本地測試,也就是在你自己的電腦上運行網站程序,
並進行細節上的修改,設置好你的網站。
一、asp源碼的本地測試
這種情況也有兩種方法的。第一種,如果你的網站沒有安裝IIS的話,可以下載一個叫Aws.exe的綠色小軟體,這個小軟體體積很小,只有600多K,不用
安裝就可以使用。下載後把這個小軟體直接放在你那個網站程序的文件夾下,然後雙擊這個小軟體,接著打開瀏覽器,輸入127.0.0.1,回車,你就可
以看到你的網站了。要修改你的網站,你可以根據網站程序的說明到網站後台去修改。
第二種,其實和第一種差不多,就是安裝IIS,IIS是windows系統自帶的一個組件,不過現在很多用戶可能都是用Ghost安裝系統的,安裝後的系統
一般都不帶IIS的。這個時候你要進行網站的本地測試,你不按第一種方法做的話,你可以拿出一個windows的完整安裝版本放到光碟里,然後進入控制面
板,雙擊添加或刪除程序,點添加/刪除Windows組件,在Internet
信息服務(IIS)前面打勾。然後點下一步,就可以進行IIS的安裝。安裝成功後,回到控制面板,進入管理工具,你會看到一個叫Internet
信息服務的組件。打開它,點左邊的+號,一直點到默認網站,然後右擊屬性,選擇主目錄,在本地路徑那裡的瀏覽,找到你本地的那
個網站程序的文件,點確定。然後打開你的瀏覽器,輸入127.0.0.1,回車,你就可以看到你的網站了。如果不行的話,你要看看IIS的默認網站
後面是不是停止了,如果停止了,你就啟動它就行了。
二、php源碼的本地測試
php源碼的本地測試是不能用上面的方法了,我是下載一個叫xampplite的軟體進行本地測試的,下載這個軟體,安裝好。然後把網站程序文件夾
里的全部內容放進xampplite里一個叫htdocs的文件夾里,接著雙擊xampp-control.exe,在Apache和
FileZilla後面的Start上分別點一下。
『貳』 如何測試PHP空間速度
站長工具 這里有
http://www.adminlj.com/
測速:http://speed.linkhelper.cn/
『叄』 如何獲得一個php變數儲存在內存中佔用的空間大小
我們在前面的php高效寫法提到,盡量不要復制變數,特別是數組。一般來說,PHP數組的內存利用率只有 1/10, 也就是說,一個在C語言裡面100M 內存的數組,在PHP裡面就要1G。下面我們可以粗略的估算PHP數組佔用內存的大小,首先我們測試1000個元素的整數佔用的內存:
[php] view plain print?
<?php
echo memory_get_usage() , '<br>';
$start = memory_get_usage();
$a = Array();
for ($i=0; $i<1000; $i++) {
$a[$i] = $i + $i;
}
$mid = memory_get_usage();
echo memory_get_usage() , '<br>';
for ($i=1000; $i<2000; $i++) {
$a[$i] = $i + $i;
}
$end = memory_get_usage();
echo memory_get_usage() , '<br>';
echo 'argv:', ($mid - $start)/1000 ,'bytes' , '<br>';echo 'argv:',($end - $mid)/1000 ,'bytes' , '<br>';輸出是:
353352
437848
522024
argv:84.416bytes
argv:84.176bytes
大概了解1000
個元素的整數數組需要佔用 82k 內存,平均每個元素佔用 84 個位元組。而純 C 中整體只需要 4k(一個整型佔用4byte * 1000)。memory_get_usage() 返回的結果並不是全是被數組佔用了,還要包括一些 PHP運行本身分配的一些結構,可能用內置函數生成的數組更接近真實的空間:
[php] view plain print?
<?php
$start = memory_get_usage();
$a = array_fill(0, 10000, 1);
$mid = memory_get_usage(); //10k elements array;echo 'argv:', ($mid - $start )/10000,'byte' , '<br>';$b = array_fill(0, 10000, 1);
$end = memory_get_usage(); //10k elements array;echo 'argv:', ($end - $mid)/10000 ,'byte' , '<br>';得到:
argv:54.5792byte
argv:54.5784byte
從這個結果來看似乎一個數組元素大約佔用了54個位元組左右。
首先看一下32位機C語言各種類型佔用的位元組:
[cpp] view plain print?
#include "stdafx.h"
//#include <stdio.h>
int main() {
printf("int:%d\nlong:%d\ndouble:%d\nchar*:%d\nsize_t:%d\n",sizeof(int), sizeof(long),
sizeof(double), sizeof(char *),
sizeof(size_t));
return 0;
}
int:4
long:4
double:8
har*:4
size_t:4
在PHP中都使用long類型來代表數字,沒有使用int類型大家都明白PHP是一種弱類型的語言,它不會去區分變數的類型,沒有int float char *之類的概念。
我們看看php在zend裡面存儲的變數,PHP中每個變數都有對應的 zval, Zval結構體定義在Zend/zend.h裡面,其結構:
[cpp] view plain print?
typedef struct _zval_struct zval;
struct _zval_struct {
/* Variable information */
zvalue_value value; /* The value 1 12位元組(32位機是12,64位機需要8+4+4=16) */zend_uint refcount__gc; /* The number of references to this value (for GC) 4位元組 */zend_uchar type; /* The active type 1位元組*/zend_uchar is_ref__gc; /* Whether this value is a reference (&) 1位元組*/};
PHP使用一種UNION結構來存儲變數的值,即zvalue_value 是一個union,UNION變數所佔用的內存是由最大成員數據空間決定。
[cpp] view plain print?
typedef union _zvalue_value {
long lval; /* long value */double dval; /* double value */struct { /* string value */char *val;
int len;
} str;
HashTable *ht; /* hash table value */zend_object_value obj; /*object value */} zvalue_value;
最大成員數據空間是struct str,指針占*val用4位元組,INT佔用4位元組,共8位元組。
struct zval佔用的空間為8+4+1+1 = 14位元組,其實呢,在zval中數組,字元串和對象還需要另外的存儲結構,數組則是一個 HashTable:
HashTable結構體定義在Zend/zend_hash.h.
[cpp] view plain print?
typedef struct _hashtable {
uint nTableSize;//4
uint nTableMask;//4
uint nNumOfElements;//4
ulong nNextFreeElement;//4
Bucket *pInternalPointer; /* Used for element traversal 4*/Bucket *pListHead;//4
Bucket *pListTail;//4
Bucket **arBuckets;//4
dtor_func_t pDestructor;//4
zend_bool persistent;//1
unsigned char nApplyCount;//1
zend_bool bApplyProtection;//1
#if ZEND_DEBUG
int inconsistent;//4
#endif
} HashTable;
HashTable 結構需要 39 個位元組,每個數組元素存儲在 Bucket 結構中:
[cpp] view plain print?
typedef struct bucket {
ulong h; /* Used for numeric indexing 4位元組 */uint nKeyLength; /* The length of the key (for string keys) 4位元組 */void *pData; /* 4位元組*/
void *pDataPtr; /* 4位元組*/
struct bucket *pListNext; /* PHP arrays are ordered. This gives the next element in that order4位元組*/struct bucket *pListLast; /* and this gives the previous element 4位元組 */struct bucket *pNext; /* The next element in this (doubly) linked list 4位元組*/struct bucket *pLast; /* The previous element in this (doubly) linked list 4位元組*/char arKey[1]; /* Must be last element 1位元組*/} Bucket;
Bucket
結構需要 33 個位元組,鍵長超過四個位元組的部分附加在 Bucket 後面,而元素值很可能是一個 zval 結構,另外每個數組會分配一個由arBuckets 指向的 Bucket 指針數組, 雖然不能說每增加一個元素就需要一個指針,但是實際情況可能更糟。這么算來一個數組元素就會佔用54 個位元組,與上面的估算幾乎一樣。
一個空數組至少會佔用 14(zval) + 39(HashTable) + 33(arBuckets) = 86個位元組,作為一個變數應該在符號表中有個位置,也是一個數組元素,因此一個空數組變數需要 118個位元組來描述和存儲。從空間的角度來看,小型數組平均代價較大,當然一個腳本中不會充斥數量很大的小型數組,可以以較小的空間代價來獲取編程上的快捷。但如果將數組當作容器來使用就是另一番景象了,實際應用經常會遇到多維數組,而且元素居多。比如10k個元素的一維數組大概消耗540k內存,而10kx 10 的二維數組理論上只需要 6M 左右的空間,但是按照 memory_get_usage的結果則兩倍於此,[10k,5,2]的三維數組居然消耗了23M,小型數組果然是劃不來的。
『肆』 國外免費php空間
NoPayHost在無用發帖的情況下提供1G儲存,10G流量的免費CP空間。感覺不錯,PHP5,支持使用Zend和IonCube,phpMyAdmin都還不錯,沒有廣告。
空間信息
申請地址:http://www.nopayhost.com/
空間大小:1,000 MB。
強制廣告:無廣告。
上傳:FTP,webftp。
腳本支持:CGI,PHP,Perl
域名綁定:頂級域名或二級域名。
帶寬限制:10,000 MB /月。
其它特點:Linux的cPanel控制面板,EasyScripts即時腳本安裝。
資料庫 :MySQL資料庫。
經測試可以用
『伍』 thinkphp 2.1做的網站 在本地測試沒有問題傳到空間就出現404 not found錯誤
你去空間裡面檢測下是否開啟了apache的rewrite功能?如果不是apache那你看下對應伺服器是否需要做對應的配置修改才能達到你目前的需求。
『陸』 php cookie本地測試正常,傳到空間後就用不了了,怎麼原因
1.頁面頭部寫session_start
2.如果不管用
看一下伺服器的php的配置文件有關session和cookie的配置
『柒』 php怎麼查看一個變數的佔用內存
我們在前面的php高效寫法提到,盡量不要復制變數,特別是數組。一般來說,PHP數組的內存利用率只有 1/10, 也就是說,一個在C語言裡面100M 內存的數組,在PHP裡面就要1G。下面我們可以粗略的估算PHP數組佔用內存的大小,首先我們測試1000個元素的整數佔用的內存:
[php] view plain print?
<?php
echo memory_get_usage() , '<br>';
$start = memory_get_usage();
$a = Array();
for ($i=0; $i<1000; $i++) {
$a[$i] = $i + $i;
}
$mid = memory_get_usage();
echo memory_get_usage() , '<br>';
for ($i=1000; $i<2000; $i++) {
$a[$i] = $i + $i;
}
$end = memory_get_usage();
echo memory_get_usage() , '<br>';
echo 'argv:', ($mid - $start)/1000 ,'bytes' , '<br>';
echo 'argv:',($end - $mid)/1000 ,'bytes' , '<br>';
輸出是:
353352
437848
522024
argv:84.416bytes
argv:84.176bytes
大概了解1000
個元素的整數數組需要佔用 82k 內存,平均每個元素佔用 84 個位元組。而純 C 中整體只需要 4k(一個整型佔用4byte * 1000
)。memory_get_usage() 返回的結果並不是全是被數組佔用了,還要包括一些 PHP
運行本身分配的一些結構,可能用內置函數生成的數組更接近真實的空間:
[php] view plain print?
<?php
$start = memory_get_usage();
$a = array_fill(0, 10000, 1);
$mid = memory_get_usage(); //10k elements array;
echo 'argv:', ($mid - $start )/10000,'byte' , '<br>';
$b = array_fill(0, 10000, 1);
$end = memory_get_usage(); //10k elements array;
echo 'argv:', ($end - $mid)/10000 ,'byte' , '<br>';
得到:
argv:54.5792byte
argv:54.5784byte
從這個結果來看似乎一個數組元素大約佔用了54個位元組左右。
首先看一下32位機C語言各種類型佔用的位元組:
[cpp] view plain print?
#include "stdafx.h"
//#include <stdio.h>
int main() {
printf("int:%d\nlong:%d\ndouble:%d\nchar*:%d\nsize_t:%d\n",
sizeof(int), sizeof(long),
sizeof(double), sizeof(char *),
sizeof(size_t));
return 0;
}
int:4
long:4
double:8
har*:4
size_t:4
在PHP中都使用long類型來代表數字,沒有使用int類型
大家都明白PHP是一種弱類型的語言,它不會去區分變數的類型,沒有int float char *之類的概念。
我們看看php在zend裡面存儲的變數,PHP中每個變數都有對應的 zval, Zval結構體定義在Zend/zend.h裡面,其結構:
[cpp] view plain print?
typedef struct _zval_struct zval;
struct _zval_struct {
/* Variable information */
zvalue_value value; /* The value 1 12位元組(32位機是12,64位機需要8+4+4=16) */
zend_uint refcount__gc; /* The number of references to this value (for GC) 4位元組 */
zend_uchar type; /* The active type 1位元組*/
zend_uchar is_ref__gc; /* Whether this value is a reference (&) 1位元組*/
};
PHP使用一種UNION結構來存儲變數的值,即zvalue_value 是一個union,UNION變數所佔用的內存是由最大
成員數據空間決定。
[cpp] view plain print?
typedef union _zvalue_value {
long lval; /* long value */
double dval; /* double value */
struct { /* string value */
char *val;
int len;
} str;
HashTable *ht; /* hash table value */
zend_object_value obj; /*object value */
} zvalue_value;
最大成員數據空間是struct str,指針占*val用4位元組,INT佔用4位元組,共8位元組。
struct zval佔用的空間為8+4+1+1 = 14位元組,
其實呢,在zval中數組,字元串和對象還需要另外的存儲結構,數組則是一個 HashTable:
HashTable結構體定義在Zend/zend_hash.h.
[cpp] view plain print?
typedef struct _hashtable {
uint nTableSize;//4
uint nTableMask;//4
uint nNumOfElements;//4
ulong nNextFreeElement;//4
Bucket *pInternalPointer; /* Used for element traversal 4*/
Bucket *pListHead;//4
Bucket *pListTail;//4
Bucket **arBuckets;//4
dtor_func_t pDestructor;//4
zend_bool persistent;//1
unsigned char nApplyCount;//1
zend_bool bApplyProtection;//1
#if ZEND_DEBUG
int inconsistent;//4
#endif
} HashTable;
HashTable 結構需要 39 個位元組,每個數組元素存儲在 Bucket 結構中:
[cpp] view plain print?
typedef struct bucket {
ulong h; /* Used for numeric indexing 4位元組 */
uint nKeyLength; /* The length of the key (for string keys) 4位元組 */
void *pData; /* 4位元組*/
void *pDataPtr; /* 4位元組*/
struct bucket *pListNext; /* PHP arrays are ordered. This gives the next element in that order4位元組*/
struct bucket *pListLast; /* and this gives the previous element 4位元組 */
struct bucket *pNext; /* The next element in this (doubly) linked list 4位元組*/
struct bucket *pLast; /* The previous element in this (doubly) linked list 4位元組*/
char arKey[1]; /* Must be last element 1位元組*/
} Bucket;
Bucket
結構需要 33 個位元組,鍵長超過四個位元組的部分附加在 Bucket 後面,而元素值很可能是一個 zval 結構,另外每個數組會分配一個由
arBuckets 指向的 Bucket 指針數組, 雖然不能說每增加一個元素就需要一個指針,但是實際情況可能更糟。這么算來一個數組元素就會佔用
54 個位元組,與上面的估算幾乎一樣。
一個空數組至少會佔用 14(zval) + 39(HashTable) + 33(arBuckets) = 86
個位元組,作為一個變數應該在符號表中有個位置,也是一個數組元素,因此一個空數組變數需要 118
個位元組來描述和存儲。從空間的角度來看,小型數組平均代價較大,當然一個腳本中不會充斥數量很大的小型數組,可以以較小的空間代價來獲取編程上的快捷。但如果將數組當作容器來使用就是另一番景象了,實際應用經常會遇到多維數組,而且元素居多。比如10k個元素的一維數組大概消耗540k內存,而10k
x 10 的二維數組理論上只需要 6M 左右的空間,但是按照 memory_get_usage
的結果則兩倍於此,[10k,5,2]的三維數組居然消耗了23M,小型數組果然是劃不來的。
『捌』 非常簡單的PHP問題,馬上給分!
<?php
phpinfo();
?>
保存為.php文件 上傳即可
『玖』 新手的PHP問題
php里對資料庫 用戶沒配置
『拾』 哪裡有比較穩定的免費php空間,收費不貴的也行 國內或國外都可以
HostDaba是加拿大的,剛才試了一下上不去了。
美國CPanel空間MonkeyServe上不去了、openwebster上不去了、thisweekin剛試了能上。
awardspace的空間限制很多,但是能上。
kilu是德國的,有一千多個免費頂級域名可選二級域名,伺服器有20個IP隨機給,其中一個被牆了,遇到不牆的概率還是很大的。
日本空間象podboy之類的ping值小,注冊一般需要日|本代|理服|務器。