2010-07-13 143 views
0

我有一個疑問,我如何將一個對象從php文件A轉換爲php文件B? 但我知道一個解決方案使用session.But我需要知道的是,他們的任何其他方法之間的會話之外的PHP文件之間傳輸對象?如何將對象從一個php文件傳輸到另一個php文件

+0

*(相關)* [維基百科 - 持久性(http://en.wikipedia.org/wiki/Persistence_%28computer_science %29) – Gordon 2010-07-13 08:39:09

回答

1

APC是probabaly最簡單的方法:

例如:

// new object 
$object = new ClassName('Kieran', 123); 

// Store it 
apc_store('object', $object); 

其他腳本

$obj = apc_fetch('object'); 
print_r($obj->method()); 
+0

是APC avail在所有的託管服務器...或我們需要安裝或一些做別的事 – 2010-07-13 09:30:06

+0

檢查phpinfo();如果不是,我建議安裝它。 – 2010-07-13 09:36:10

+0

在PHP 5.3中可以使用Itrs,你只需要在你的php.ini下啓用它'如果它不存在,你可以在這裏http://pecl.php.net/package/apc – RobertPitt 2010-07-13 10:19:11

1

保存在文件中,保存在數據庫中,保存在共享內存中,保存在緩存服務器中。

+0

你能否解釋一下在共享內存中保存並保存在緩存服務器中。 – 2010-07-13 08:26:50

+0

http://php.net/manual/en/book.shmop.php http://php.net/manual/en/book.memcache.php – 2010-07-13 08:30:29

+0

使用memcached ..「Memcached是一個針對任意數據(字符串,對象)小塊的內存中鍵值存儲」 – RobertPitt 2010-07-13 08:30:37

1

一種方法是將序列化對象或其數據存儲到數據庫中,使用會話ID作爲「再次找到」它的關鍵字。

使用緩存文件也可以做到這一點。

更快的方法是使用共享內存緩存,如memcache。這些解決方案始終需要進行服務器端管理和root訪問權限的設置。

0

序列化對象並存儲在下列其中一個(Database,Temp,Memcache)中。

根據對象的組成,我會看看執行__sleep__wake魔術方法,以確保對象能夠正確傳輸。

0

通過捲曲你可以將任何東西......試試這個..

http://php.net/manual/en/book.curl.php 
+0

我不認爲OP意味着通過跨服務器請求,誰願意通過HTTP發送對象? – RobertPitt 2010-07-13 08:29:08

+0

@RobertPitt:例如,首先「序列化」它們。 – NikiC 2010-07-13 09:04:43

+0

對象可以是非常巨大的,我知道你可以在發送它們之前將它們序列化,但仍然可能非常大,並且有時會覆蓋Apaches HTTP_VARS Max允許的字符等,我個人將在本地存儲文件,用服務器臨時文件的地址,然後使用curl來獲取文件,然後ping回服務器以刪除。 – RobertPitt 2010-07-13 09:23:09

0

最簡單的方法(除了使用會話)可能是將其保存爲APC(替代PHP緩存)用戶變量,因爲您可能已經爲操作碼緩存目的安裝了APC。這樣你就可以有兩個擴展。

APC將Memcached中的值存儲在內存中,但安裝起來更容易,因爲它不是一個額外的守護進程,而是一個PHP擴展。

1

您可以使用此方法: 連載()反序列化( )

fileA.php:

<?php 
require_once 'employee.class.php'; 
$employee=new employee($id,$firstname,$lastname); 
$serializeemployee=serialize($employee); 
session_start(); 
$_SESSION['employee']=$serializeemployee; 
header('location: ./fileB.php'); 
?> 

fileB.php:

<?php 
session_start(); 
if(isset($_SESSION['employee']) && $_SESSION['employee']) 
{ 
require_once 'employee.class.php'; 
$employee=unserialize($_SESSION['employee']); 
echo $employee->getFirstname(); 
?> 
相關問題