我有一个Flex程序,它从PHP脚本中获取JSON数组。 PHP脚本不仅包含一个简单的JSON数组,而是从Activecollab中获取数据,并在编码数据之前对数据进行一些处理。
第一个测试涉及一个小型JSON数组,需要很短的时间才能通过PHP进行编码。但是,当我尝试扩展测试时,Flash影片将在尝试从PHP加载JSON数据时崩溃。测试之间没有代码差异,只是数据量和PHP编码所需的时间。我在看内存问题还是超时问题?
PS:当我在Firefox中调用PHP脚本时,它不会超时并仍然返回一个JSON数组。它只需要一段时间就可以返回数组。
答案 0 :(得分:0)
我假设在浏览器中点击你的php服务不会超时。如果是,则需要更改php设置以允许脚本执行更长时间。
否则你可以像这样尝试一个不同的策略:有flex调用你的php服务并告诉它开始数据处理,让你的php服务返回一个令牌id灵活用于轮询。让另一个php服务跟踪处理进度(接收用于跟踪作业的令牌)。第二个服务将返回每个请求的进度报告,直到处理完成。处理完成后,它会在下一个请求中返回数据。
让php生成一个用于跟踪'job'的id,以便flex可以在作业完成时轮询和检索数据。这将至少消除Flex在服务器端处理发生时正在处理的等待时间。
当然,您需要在使用匹配令牌等待请求的同时将预先处理的输出服务器端存储在某处。您还需要一种清理机制,偶尔会在超时时清除此映射/缓存。
您可以使用闪存分析器检查客户端上的内存使用情况。当您尝试加载数据时,您的总内存使用量是否会增加很多?