好的,我完全被这里难住了.我发现了类似的问题,但答案似乎不适用于我的具体问题.我已经开了好几天了.
我在这里有这个simplexml对象(它实际上比这更长,很多,但是我正在删除所有无关的东西,所以你实际上会看到它):
SimpleXMLElement Object
(
[SubjectClassification] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[Authority] => Category Code
[Value] => s
[Id] => s
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[Authority] => Subject
[Value] => Sports
[Id] => 54df6c687df7100483dedf092526b43e
)
)
[2] => SimpleXMLElement Object
(
[@attributes] => Array
(
[Authority] => Subject
[Value] => Professional baseball
[Id] => 20dd2c287e4e100488e5d0913b2d075c
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
我通过对包含以下内容的变量执行print_r来获取此代码块:
$subjects->SubjectClassification->children();
Run Code Online (Sandbox Code Playgroud)
现在,我想了解subjectClassification数组的所有元素.他们都是!但是当我这样做时:
$subjects->SubjectClassification;
Run Code Online (Sandbox Code Playgroud)
或这个:
$subjects->SubjectClassification->children();
Run Code Online (Sandbox Code Playgroud)
或者,如果我尝试通过循环获取所有数组元素,我得到的是: …
我找到这个问题的答案是完全不成功的.希望有人可以提供帮助.
我有一个PHP脚本(一个特定的WordPress模板),当用户点击它时会自动导入和处理图像.问题是图像处理占用大量内存,特别是如果多个用户同时访问模板并启动图像处理.由于这个原因,我的服务器多次崩溃.
我的解决方案是,如果它已经运行,则不执行图像处理功能.在函数开始运行之前,我会检查一个名为image_import_running的数据库条目,看它是否设置为false.如果是,则该函数运行.函数的第一件事就是将image_import_running设置为true.然后,在完成所有操作后,我将其设置为false.
它在理论上很有效.该网站没有崩溃,我可以告诉你.但它有两个主要问题:
如果用户在加载页面时关闭页面,则脚本永远不会完成处理图像,因此永远不会将image_import_running设置为false.在手动将图像设置为false之前,模板将永远不会再次处理图像.
如果脚本在处理图像时超时 - 如果队列中有很多图像,这很有可能 - 你的问题基本上与1号相同:脚本永远不会达到将image_import_running设置回的程度假.
为了处理1号(我意识到的两个问题中的第一个),我添加ignore_user_abort(true)了脚本.它有用吗?我不知道,因为2号仍然是一个问题.那就是我难倒的地方.
如果我可以询问服务器脚本是否正在运行,我可以这样做:
if($import_running && $script_not_running) {
$import_running = false;
}
Run Code Online (Sandbox Code Playgroud)
但是我如何设置该$script_not_running变量?甘拜下风.
我和你分享了这整个故事,以防你有其他一些出色的解决方案.