|
Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com |
php-general-digest-help
lists.php.net
Date: Thu Oct 02 2008 - 05:53:45 CDT
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
php-general Digest 2 Oct 2008 10:53:45 -0000 Issue 5714
Topics (messages 281353 through 281358):
Re: SESSION array problems
281353 by: Nathan Rixham
281355 by: Jim Lucas
Re: Questions regarding limits of processes launched bysystem, exec,passthru ...
281354 by: Valentin Schmid - ICSurselva AG
Re: store array into session variable and get it back later
281356 by: Stut
php server push
281357 by: gkrisz.upcmail.hu
281358 by: Nathan Rixham
Administrivia:
To subscribe to the digest, e-mail:
php-general-digest-subscribe
lists.php.net
To unsubscribe from the digest, e-mail:
php-general-digest-unsubscribe
lists.php.net
To post to the list, e-mail:
php-general
lists.php.net
----------------------------------------------------------------------
attached mail follows:
tedd wrote:
> At 3:41 PM -0400 10/1/08, tedd wrote:
>>> What about:
>>>
>>> foreach ($_SESSION['user_id'] as $key => $value)
>>> {
>>> $last = $_SESSION['last_name'][$key];
>>> $first = $_SESSION['first_name'][$key];
>>> echo "$last, $first";
>>> }
>>
>> Jay:
>>
>> Close, it produced:
>>
>> Array, Array
>> Array, Array
>> Array, Array
>>
>> Cheers,
>>
>> tedd
>
>
> My error, if produced.
>
>
> Cable, Diane
> a, i
>
> While print_r($_SESSION); JUST BEFORE IT produced:
>
> [user_id] => Array
> (
> [0] => 6156
> [1] => 7030
> [2] => 656
> )
>
> [first_name] => Array
> (
> [0] => Diane
> [1] => first name
> [2] => Helen
> )
>
> [last_name] => Array
> (
> [0] => Cable
> [1] => CagoEsogs-temp (forum)
> [2] => Cahalane
> )
>
> Now, what wrong with this picture?
>
> Cheers,
>
> tedd
tedd wrote:
> At 3:41 PM -0400 10/1/08, tedd wrote:
>>> What about:
>>>
>>> foreach ($_SESSION['user_id'] as $key => $value)
>>> {
>>> $last = $_SESSION['last_name'][$key];
>>> $first = $_SESSION['first_name'][$key];
>>> echo "$last, $first";
>>> }
>>
>> Jay:
>>
>> Close, it produced:
>>
>> Array, Array
>> Array, Array
>> Array, Array
>>
>> Cheers,
>>
>> tedd
>
>
> My error, if produced.
>
>
> Cable, Diane
> a, i
>
> While print_r($_SESSION); JUST BEFORE IT produced:
>
> [user_id] => Array
> (
> [0] => 6156
> [1] => 7030
> [2] => 656
> )
>
> [first_name] => Array
> (
> [0] => Diane
> [1] => first name
> [2] => Helen
> )
>
> [last_name] => Array
> (
> [0] => Cable
> [1] => CagoEsogs-temp (forum)
> [2] => Cahalane
> )
>
> Now, what wrong with this picture?
>
> Cheers,
>
> tedd
in this case.. what's happened is:
$_SESSION['first_name'] is a reference to a variable $first (or whatever
is in your for loop)
$_SESSION['last_name'] is a reference to a variable $last (or whatever
is in your for loop)
when you've set $last and $first to string's in the for loop it's passed
the variable by reference back to $_SESSION['first_name'] and
$_SESSION['last_name'] as strings;
when it hit's the second iteration on the for loop it now has strings to
deal with so uses the $key (holding integer 1 at this stage) as a string
offset thus giving you the second character (offset [1]) of the string
variables $last/$first. now set to 'cable'/'diane' thus giving you the
'a'/'i'. when it does pass three there is no offset [2] so gives you
nothing.
*phew*
reproduce code!
<?php
$userids = array('6156','1234','8867');
$first = array('Diane','Big','Joe');
$last = array('Cable','Ron','Dirt');
function save_to_session( ) {
global $userids , $first , $last;
$_SESSION['user_id'] = &$userids;
$_SESSION['first_name'] = &$first;
$_SESSION['last_name']= &$last;
}
save_to_session( );
print_r( $_SESSION );
$num_users = count($_SESSION['user_id']);
for ($i = 0; $i < $num_users; $i++) {
$first = $_SESSION['first_name'][$i];
$last = $_SESSION['last_name'][$i];
echo "$last, $first\n";
}
?>
Regards!
--
nathan ( nathan
kraya.co.uk )
{
Senior Web Developer
php + java + flex + xmpp + xml + ecmascript
web development edinburgh | http://kraya.co.uk/
}
attached mail follows:
tedd wrote:
> Hi gang:
>
> Apparently, there's something going on here that I don't understand --
> this happens far too often these days.
>
> Here's a print_r($_SESSION); of the session arrays I'm using:
>
> [user_id] => Array
> (
> [0] => 6156
> [1] => 7030
> [2] => 656
> )
>
> [first_name] => Array
> (
> [0] => Diane
> [1] => Fred
> [2] => Helen
> )
>
> [last_name] => Array
> (
> [0] => Cable
> [1] => Cago
> [2] => Cahalan
>
>
> The following is how I tried to access the data contained in the
> $_SESSION arrays:
>
> $num_users = count($_SESSION['user_id']);
>
> for ($i = 0; $i < $num_users; $i++)
> {
> $last_name = $_SESSION['last_name'][$i];
> $first_name = $_SESSION['first_name'][$i];
> echo("<p>$last_name, $first_name</p>");
> }
>
> The only thing that came out correct was the first echo. The remaining
> echos had no values for $first_name or $last_name.
>
> What's happening here?
>
> Cheers,
>
> tedd
>
>
> PS: I'm open to other suggestions as to how to do this.
Why don't you echo what you are trying to access for each loop
for ($i = 0; $i < $num_users; $i++)
{
print_r($_SESSION['last_name'][$i]);
print_r($_SESSION['first_name'][$i]);
}
Does the above return to you what you would expect?
An alternate to what you are doing here would be this.
foreach ( $_SESSION['user_id'] AS $i=>$id)
{
print_r($id);
print_r($_SESSION['last_name'][$i]);
print_r($_SESSION['first_name'][$i]);
}
How about this?
Jim Lucas
attached mail follows:
Hello Thodoris,
>
>> Hello all again,
>>
>> It seems that Problem can only be solved by one of the following ways:
>>
>> 1. Don't use mod_php; use CGI or FastCGI instead. Then it would be
>> possible to limit the resources via RLimitCPU / RLimitMEM.
>>
>
> I haven't tried that but as I have noticed in the reference that
> probably mod_php's processes get limited too:
>
> This applies to processes forked off from Apache children servicing
> requests, not the Apache children themselves.
> This includes CGI scripts and SSI exec commands, but not any processes
> forked off from the Apache parent such as piped logs.
>
> It says that it includes CGI but it doesn't exclude necessarily mod_php.
> Does it ?
No, it doesn't.
attached mail follows:
On 1 Oct 2008, at 20:42, Per Jessen wrote:
> Stut wrote:
>> On 1 Oct 2008, at 11:40, Per Jessen wrote:
>>> Alain Roger wrote:
>>>
>>>> how can i get the 'name' value for each row in this session stored
>>>> array ? thx.
>>>
>>> You haven't stored an array in the session, you've tried to store an
>>> object of class CBreadcrumb. Which AFAIK isn't supported.
>>
>> It is supported but you need to be careful about resources in the
>> class. You can handle these gracefully using the __sleep and __wake
>> magic methods. You also need to make sure the class has been loaded
>> before starting the session or have an __autoload defined.
>
> Thanks, I was not aware. Very clear and succinct explanation, btw.
No worries. I find it best to limit myself to responding quickly,
otherwise I get nothing else done! It also forces me to get straight
to the point.
-Stut
--
http://stut.net/
attached mail follows:
Hi, (i hope this is the right place to ask questions like below)
I am trying to use content type 'multipart/x-mixed-replace' to
achive server pushing and I have the following piece of code, which works perfectly.
/* file.html */
function handleContent(event)
{
var result = event.target.responseXML;
}
var xrequest = new XMLHttpRequest();
xrequest.multipart = true;
xrequest.open("GET","file.php",true);
xrequest.onload = handleContent;
xrequest.send(null);
/* file.php */
<?php
header('Content-type: multipart/x-mixed-replace;boundary="rn9012"');
print "--rn9012\n";
/*
With these prints i can generate an event on the browser side.
For instance if I would like to wait for sg to happen on the server side i can
make an infinite loop and wait. when sg happens i just print the event.
*/
while (true) {
print "Content-type: application/xml\n\n";
print "<?xml version='1.0'?>\n";
print "<content>event1</content>\n";
print "--rn9012\n";
flush();ob_flush();
}
sleep(5);
/* I close the connection with this event. Closing tag: with 2 extra -- */
print "Content-type: application/xml\n\n";
print "<?xml version='1.0'?>\n";
print "<content>last event</content>\n";
print "--rn9012--\n";
?>
BUT I have to keep an infinite loop on the server side for each clients
just to be able to send and event (let's say in every 3rd hour)
Is there a way with which i can keep the connection without the infinite loop,
and send the event message to the client from a different php file?
/* file2.php */
<?php
/* this is what i wish */
send_event_toclient(clientid, eventmessage);
//clientid: id of the client that i had saved before
//i think this id should be sg socket where i can write the output to.
?>
I hope I cound explain my problem clearly
thank you in advance
Christian Guttmann
attached mail follows:
gkrisz
upcmail.hu wrote:
> Hi, (i hope this is the right place to ask questions like below)
>
> I am trying to use content type 'multipart/x-mixed-replace' to
> achive server pushing and I have the following piece of code, which works perfectly.
>
> /* file.html */
> function handleContent(event)
> {
> var result = event.target.responseXML;
> }
>
> var xrequest = new XMLHttpRequest();
> xrequest.multipart = true;
> xrequest.open("GET","file.php",true);
> xrequest.onload = handleContent;
> xrequest.send(null);
>
> /* file.php */
>
> <?php
> header('Content-type: multipart/x-mixed-replace;boundary="rn9012"');
> print "--rn9012\n";
>
>
> /*
> With these prints i can generate an event on the browser side.
> For instance if I would like to wait for sg to happen on the server side i can
> make an infinite loop and wait. when sg happens i just print the event.
>
> */
> while (true) {
> print "Content-type: application/xml\n\n";
> print "<?xml version='1.0'?>\n";
> print "<content>event1</content>\n";
> print "--rn9012\n";
> flush();ob_flush();
> }
>
>
> sleep(5);
>
> /* I close the connection with this event. Closing tag: with 2 extra -- */
> print "Content-type: application/xml\n\n";
> print "<?xml version='1.0'?>\n";
> print "<content>last event</content>\n";
> print "--rn9012--\n";
>
> ?>
>
> BUT I have to keep an infinite loop on the server side for each clients
> just to be able to send and event (let's say in every 3rd hour)
>
> Is there a way with which i can keep the connection without the infinite loop,
> and send the event message to the client from a different php file?
>
> /* file2.php */
> <?php
> /* this is what i wish */
> send_event_toclient(clientid, eventmessage);
> //clientid: id of the client that i had saved before
> //i think this id should be sg socket where i can write the output to.
>
> ?>
>
> I hope I cound explain my problem clearly
> thank you in advance
>
> Christian Guttmann
>
ahh an age old problem; in short you need something like "meteor" to
handle this (a different http server); tbh the http protocol isn't cut
out for this.
You may want to save some time and look into XMPP with PUB-SUB; it's
lightweight permanent client server connection with server push (ignite
realtime/jive software do a great XMPP server that's opensource ;)
Regards and sorry for the vagueness - there are tonnes of articles
everywhere on the net documenting the problems; this is why everybody
poll's all the time.
if you do want a strictly PHP resolution then look into making your own
multiprocess daemon with socket stream server / client and the stream_
functions - rather complicated and not a "standard" way fo doing things,
but fun :)
--
nathan ( nathan
kraya.co.uk )
{
Senior Web Developer
php + java + flex + xmpp + xml + ecmascript
web development edinburgh | http://kraya.co.uk/
}
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]