Ik probeer shared memory uit te lezen via php op mijn server thuis. Ik gebruik apache 1.3.22 en php-4.1.2.
Dit is de structure in C die in het shm aanwezig is:
Als ik nu middels de volgende php code:
dan krijg ik het volgende in mijn browser:
Hoe krijg ik nu de output normaal? Dus de chars als chars en de longs als nummer?
Ik dacht het op te lossen via de manier die ik in C gebruik, maar die maak gebruik van de struct lengte en die bestaat niet in php.
Dit is de structure in C die in het shm aanwezig is:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| struct btmp
{
char username[USERNAME_SIZE+1]; /* user's name */
char hostname[HOSTNAME_SIZE+1]; /* user's hostname */
char tty[7]; /* user's tty */
char doing[DOING_SIZE+1]; /* user's doing */
char curr_room[ROOMNAME_SIZE+1]; /* room the user is in now */
char xdisreason[61]; /* */
long usernum; /* user's usernumber */
long logintime; /* user's logintime */
long idletime; /* user's idlestarttime */
unsigned long priv; /* user's priv. */
int pid; /* user's PID */
int x_shm; /* X-shmem slot # */
long Xing; /* Usernum of user i'm xing now */
unsigned int timescalled; /* number of logins */
unsigned int chat; /* number of chatchamber */
unsigned long flags; /* different flags: B_* */
}; |
Als ik nu middels de volgende php code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <html>
<head>
<title>wholist</title>
</head>
<body>
<?
if($shm_id = shmop_open ( 200, "a", 0664, 22576))
{
$wholething = shmop_read ( $shm_id, 0, shmop_size($shm_id));
echo "<pre>$wholething</pre>";
shmop_close ($shm_id);
}
else
{
echo "Get shared wholist space!<br>";
}
?>
</body>
</html> |
dan krijg ik het volgende in mijn browser:
code:
1
| FastEddyeat *jammittyp0bProbably coding.....Lobby^ÄøArachnoseat *bd-c-3086.mxs.adsl.ttyp3 Lobby^±<Ò±<`?À |
Hoe krijg ik nu de output normaal? Dus de chars als chars en de longs als nummer?
Ik dacht het op te lossen via de manier die ik in C gebruik, maar die maak gebruik van de struct lengte en die bestaat niet in php.