我有一台具有Linux CentOS发行版的机器,它同时具有多个互联网连接。
我正在尝试编写一些PHP代码,这些代码将执行以下操作:
connection.
注意,互联网连接是ppp0、ppp1和ppp2。
以下是“ifconfig”的输出:
eth0 Link encap:Ethernet HWaddr 00:23:7D:3B:04:26
inet addr:86.111.198.9 Bcast:86.111.198.15 Mask:255.255.255.240
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:33511 errors:0 dropped:0 overruns:0 frame:0
TX packets:24728 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3144233 (2.9 MiB) TX bytes:3930225 (3.7 MiB)
Interrupt:185 Memory:f8000000-f8012100
eth1 Link encap:Ethernet HWaddr 00:23:7D:3B:04:1E
inet addr:192.168.1.64 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7570 errors:0 dropped:0 overruns:0 frame:0
TX packets:6730 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:553439 (540.4 KiB) TX bytes:463989 (453.1 KiB)
Interrupt:193 Memory:fa000000-fa012100
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:95 errors:0 dropped:0 overruns:0 frame:0
TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:14908 (14.5 KiB) TX bytes:14908 (14.5 KiB)
ppp0 Link encap:Point-to-Point Protocol
inet addr:78.93.176.35 P-t-P:212.93.193.40 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1442 Metric:1
RX packets:238 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:44486 (43.4 KiB) TX bytes:294 (294.0 b)
ppp1 Link encap:Point-to-Point Protocol
inet addr:78.93.70.4 P-t-P:212.93.193.15 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1442 Metric:1
RX packets:219 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:24237 (23.6 KiB) TX bytes:2330 (2.2 KiB)
ppp2 Link encap:Point-to-Point Protocol
inet addr:87.109.229.209 P-t-P:84.235.124.10 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1442 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:294 (294.0 b) TX bytes:54 (54.0 b)以下是路由命令的输出:
Destination Gateway Genmask Flags Metric Ref Use Iface
212.93.193.15 * 255.255.255.255 UH 0 0 0 ppp1
212.93.193.40 * 255.255.255.255 UH 0 0 0 ppp0
84.235.124.10 * 255.255.255.255 UH 0 0 0 ppp2
86.111.198.0 * 255.255.255.240 U 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth1
169.254.0.0 * 255.255.0.0 U 0 0 0 eth1有人有什么想法吗?
发布于 2009-08-05 19:41:46
您可以使用curl_multi_*()和curl_setopt(CURLOPT_INTERFACE, 'ppp0')等在PHP中完成此操作。
就实际发现接口而言,我只是在ifconfig的输出上运行了一个简单的正则表达式。当然,这并不是一个很好的方法,但是在脚本启动时,通常只需要做一次,所以这并不是一个很大的性能问题。
发布于 2009-08-05 19:32:26
您可能必须通过curl/wget路由连接。这些命令行实用程序使您能够更明确地控制要使用的接口。只需从PHP脚本中触发命令并捕获输出即可。据我所知,无法通过像fopen/file_get_content这样的带有http:// stream处理程序的内容来指定接口。即使是史努比也没有指定接口的方法。
https://stackoverflow.com/questions/1235044
复制相似问题