Из compact в обычный вид

Jan 27th, 2010

Недавно понадобилось протестировать собственный же анонсер, по всем критериям и один из них нормальная работа в compact режиме (т.е. пиров нам анонсер отдает в закодированном виде, что уменьшает в свою очередь трафик между сервером и клиентами).

Для того чтобы прекратить из compact в обычный вид написал функцию, которая до ужаса банальна, но работает:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function peers_to_array($data)
{
	if (!is_array($data['peers']))
	{
		$new_peers = array();
 
		while (strlen($data['peers']) > 0)
		{
			list(, $ip)   = @unpack('N', substr($data['peers'], 0, 4));
			list(, $port) = @unpack('n', substr($data['peers'], 4, 6));
 
			$new_peers[] = array
			(
				'ip'   => long2ip($ip), 
				'port' => $port
			);
 
			$data['peers'] = substr($data['peers'], 6);
		}
 
		$data['peers'] = $new_peers;
		unset($new_peers);
	}
 
	return $data;
}

:) Как ее использовать я думаю объяснять не нужно.

No comments yet.
Перед отправкой формы:
Human test by Not Captcha

Включена модерация комментариев. Ваш комментарий появится время позже.