Re: too slow to unset big array (after mem fragment)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Xuefer Tinys wrote:
> i have a big array with 20k elements, i have no problem building it,
> because the elements is recv from socket, i can socket_select() on 1k
> clients, read from them.
> i plan to unset the whole array every 1hour
> this is a not big problem when for a few times, it takes me 0.02 seconds
> but after many hours of running, unset will sometime takes 10 seconds.
> this is big problem because it's 1 unset() statement, and all incoming
> connection is blocked, the client may get connection time out
>
> summary:
> 1. one process, no fork (just has to be)
> 2. socket_select(), process each client's data simultaneously. some
> data will be put into array
> 3. each element value is /true/, and key is numeric(ip2long)
> $array[ip2long($ip)] = true;
> 4. fast to unset, but slow to unset after a few hours, with similar
> amount of elements

Just some ideas from a naive reader:

1. unset() more often
2. unset() only a portion of the elements of the array

You may even want to store a TIME element, and only unset() the "old"
items or something.

You may also want to, perhaps, put the unset() of older data inside your
socket listening/reading loop, so that you are unset-ing the really old
stuff as you read the new stuff, to always keep your array "small" in
size.

-- 
Like Music?
http://l-i-e.com/artists.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux