downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

NULL> <Objects
[edit] Last updated: Fri, 23 Mar 2012

view this page in

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.

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.

Informacja: 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.



NULL> <Objects
[edit] Last updated: Fri, 23 Mar 2012
 
add a note add a note User Contributed Notes Resources
Soos Gergely 26-Apr-2010 07: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 15-Dec-2008 05: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 10: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.

 
show source | credits | sitemap | contact | advertising | mirror sites