保持 php 脚本处于活动状态
Keeping a php script active
我正在考虑将一些大图像上传到我的网页上,并认为我可以使用具有缩放功能的特殊图像查看器来优化加载。正如我很久以前了解到的那样,浏览器在图像尺寸方面有一定的限制,可能还有内存。仅在页面上显示图像这一简单任务的解决方法是在 PHP
中调整服务器端的大小并显示它。
然而,考虑到允许缩放功能以便人们可以查看所有小细节(基本上将图片视为 1:1 比例),我遇到的问题是能够提供“快速缩放”。据我了解,PHP
脚本在调用时是 运行 一次,然后在完成后从内存中清除。我用一张 40MB 的图片进行了测试,imagecreatefrompng();
花了 5 秒,这意味着每次客户端缩放(和平移)时,他们都必须等待 5 秒才能更新图像。
问题变成了是否可以保留 PHP
脚本 运行ning 并在需要时保留其内存?就像当客户点击缩略图时,调用 PHP
加载图像,它 returns 调整大小的图像,但保持活动状态并在内存中保留 $img
,等待获取更多说明。当客户端缩放时,会向 PHP
发出一个新的调用,其中包含所需的尺寸,而不必重新加载图像,它会调整大小并裁剪仍在内存中的原始 $img
。当客户端通过关闭查看器、选项卡或浏览器完成操作时,会向 PHP
发出一个调用,表示它已完成,这会触发它 imagedestroy(original);
、清除内存并停止。
(当客户端意外关闭并且没有发送“停止”信号时,可能会有某种超时)
由于您的图像非常大,我会考虑在上传图像后创建图块,然后像大多数地图库一样使用 JS 库来处理显示和缩放功能。 OpenSeadragon 通常是其中之一。
配合使用
我正在考虑将一些大图像上传到我的网页上,并认为我可以使用具有缩放功能的特殊图像查看器来优化加载。正如我很久以前了解到的那样,浏览器在图像尺寸方面有一定的限制,可能还有内存。仅在页面上显示图像这一简单任务的解决方法是在 PHP
中调整服务器端的大小并显示它。
然而,考虑到允许缩放功能以便人们可以查看所有小细节(基本上将图片视为 1:1 比例),我遇到的问题是能够提供“快速缩放”。据我了解,PHP
脚本在调用时是 运行 一次,然后在完成后从内存中清除。我用一张 40MB 的图片进行了测试,imagecreatefrompng();
花了 5 秒,这意味着每次客户端缩放(和平移)时,他们都必须等待 5 秒才能更新图像。
问题变成了是否可以保留 PHP
脚本 运行ning 并在需要时保留其内存?就像当客户点击缩略图时,调用 PHP
加载图像,它 returns 调整大小的图像,但保持活动状态并在内存中保留 $img
,等待获取更多说明。当客户端缩放时,会向 PHP
发出一个新的调用,其中包含所需的尺寸,而不必重新加载图像,它会调整大小并裁剪仍在内存中的原始 $img
。当客户端通过关闭查看器、选项卡或浏览器完成操作时,会向 PHP
发出一个调用,表示它已完成,这会触发它 imagedestroy(original);
、清除内存并停止。
(当客户端意外关闭并且没有发送“停止”信号时,可能会有某种超时)
由于您的图像非常大,我会考虑在上传图像后创建图块,然后像大多数地图库一样使用 JS 库来处理显示和缩放功能。 OpenSeadragon 通常是其中之一。
配合使用