Home | MySQL Russian Manual | MySQL Manual | Apache HTTP Server Rus Documentation | Apache HTTP Server Documentation | downloads | faq

search for in the  Language: Russian


Resources

A resource is a special variable, holding a reference to an external resource. Resources are created and used by special functions. See the appendix for a listing of all these functions and the corresponding resource types.

Note: The resource type was introduced in PHP 4

See also the get_resource_type() function.

Converting to resource

As resource variables hold special handlers to opened files, database connections, image canvas areas and the like, converting to a resource makes no sense.

Freeing resources

Thanks to the reference-counting system introduced with PHP 4's Zend Engine, a resource with no more references to it is detected automatically, and it is freed by the garbage collector. For this reason, it is rarely necessary to free the memory manually.

Note: Persistent database links are an exception to this rule. They are not destroyed by the garbage collector. See the persistent connections section for more information.


User Contributed Notes
Resources
Soos Gergely
26-Apr-2010 12:24
It is always wrong to assume that some operation, like casting to a resource makes no sense. People will always find some extreme case where it would be useful; like the previous example with mysql. My problem was that I wanted to start daemons from a web interface but the apache filehandles were inherited which caused that apache was unable to restart. If I could only typecast a number to a filehandle and then close it... Instead I had to write a small C program that closes every filehandle and then starts my program. I surely miss Apache2::SubProcess from perl. (Also, in perl you can reopen a file and then close it using IO::Handle module's fdopen. I'm just saying.)
wetmonkey__ at at __gmail dot com
16-Dec-2008 12:17
Resources are commonly used to iterate through a mysql or file handle.
example

<?php
while($row = mysql_fetch_row($resource)){
  echo
$row[0] ;
}
?>

It's possible to fake this treatment.

<?php
class fakewhile{

public
$arrayCount;
public
$arrayCounter;

function
setArrValues(){
  
$this->arrValues = array(0 =>array("apple","artichoke","apricot"),1 => array("bears","dogs","cats"));
 
$this->arrayCounter = 0;
 
$this->arrayCount = count($this->arrValues);
}

function
outputValues(){
/*
 * Anything until the if statement is evaluted one more
 * time then the array count value
 */
 
$arrayInfo = $this->arrValues;
 
$arrCounter = $this->arrayCounter;
 if(
$arrCounter > $this->arrayCount){
  return
false;
 }
 
$endCounter = $arrCounter+1;
 
$this->arrayCounter = $endCounter;
 return
$arrayInfo[$arrCounter];
}

}

$fw = new fakewhile();
$fw->setArrValues();
while(
$row = $fw->outputValues()){
   
print_r($row);
}
?>

Hopefully will get someone started on completing a complete application.
adrian dot dziubek at gmail dot com
07-Jul-2008 03:55
I spent an hour trying to create mock setup for testing SQL queries. The explanation here, that a resource contains file handlers and therefore there is no sense in trying to create one is lame. Being unable to redefine functions, creating a fake resource was the second thing I tried to put test in place, but looking at the search results, I see I'm the first one to try... For me it looks like security by obscurity.
evildictaitor at hotmail dot com
16-Aug-2004 05:25
In response to yasuo_ohgaki, the reason for the inability of the $_SESSION[] variable to hold references is because a session is just a serialize()'d version of it's member variables saved under a unique filename, with this filename following the user around.

$_SESSION[] is therefore limited by the constraints of the serialize() function

Although this is not <i>strictly</i> true, ($_SESSION does some handling to convert messy variables (e.g. "s and ;s)) it cannot store resources due to the serialise() function's dependancy
isaac at chexbox dot com
22-Jun-2002 08:37
For the the oblivious: An example of a resource would be a mysql database connection.

$result = mysql_connect("localhost", "username", "pass");
//$result variable is a resource.

print $result;
//will print: Resource ID#1, or something similar
 

 
credits | contact