当我使用Mathermatica(Import["mysite","Data"])连接到我的站点并查看我的Apache日志时,我看到:
99.XXX.XXX.XXX - - [22/May/2011:19:36:28 +0200] "GET / HTTP/1.1" 200 6268 "-" "Mathematica/8.0.1.0.0 PM/1.3.1"
我可以将它设置为这样(当我连接到真正的浏览器时):
99.XXX.XXX.XXX - - [22/May/2011:19:46:17 +0200] "GET /favicon.ico HTTP/1.1" 404 183 "-" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.68 Safari/534.24"
编辑:只是确认你是否可以重现这个是否有用.尝试此操作只需要一台计算机(无需远程连接).
更新似乎其他人无法在Mac或Win7上重现这一点,因此它可能是WinXP特定的或特定于我的机器.在这一点上,我放弃了.
最好有一个关于前端和内核如何通信的教程,这样我们就可以调试远程内核问题.任何这样的一般答案(或其他地方的教程链接)都是最受欢迎的.我已经了解Sascha Kratky 的远程内核策略.
现在的实际问题是: 当我以任何方式连接到远程机器时(例如使用远程内核策略),前端迟早会冻结.我怎么能阻止这个?
以下是如何在一台机器上重现问题(无需远程连接):
创建新的内核配置(评估菜单 - >内核配置选项...)
选择高级选项.
MLOpen的论据:
-LinkName "8000@YOUR-IP-HERE,8001@YOUR-IP-HERE" -LinkMode Listen
-LinkProtocol TCPIP -LinkHost "YOUR-IP-HERE" -LinkOptions MLDontInteract
Run Code Online (Sandbox Code Playgroud)
(替换YOUR-IP-HERE为计算机的IP地址.在Windows上,您可以通过ipconfig在命令窗口中输入来获取此信息.)
用于启动内核的Shell命令:保留为空(我们将手动执行)
打开一个新的笔记本,将笔记本的内核设置为你刚设置的内核,并评估一些东西(1+1).
现在我们需要在连接超时之前手动启动内核.因此,math在命令行模式下启动一个新的kernel(),并评估以下内容:
link=LinkConnect["8000,8001",LinkProtocol->"TCPIP"] (* connect to front end link *)
$ParentLink = link; (* set the front end link as parent link *)
Run Code Online (Sandbox Code Playgroud)
现在连接已建立,一切似乎都正常工作(保存前端粉红色消息窗口中的一条消息)
评估Manipulate[n, {n, 0, 100, 1}].首先,这似乎也有效.现在玩滑块.前端迟早会冻结,需要被杀死.对我来说,向上和向下拖动滑块约10秒而不释放它总是足够的.
为什么前端会冻结? 如何以一切正常工作的方式在前端和内核之间创建TCPIP模式连接?
一些说明:
LinkProtocol -> "SharedMemory".