小编bou*_*def的帖子

如何获取simplexml对象的所有元素

好的,我完全被这里难住了.我发现了类似的问题,但答案似乎不适用于我的具体问题.我已经开了好几天了.

我在这里有这个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 simplexml

6
推荐指数
1
解决办法
4150
查看次数

如果脚本已经在运行,请不要运行脚本

我找到这个问题的答案是完全不成功的.希望有人可以提供帮助.

我有一个PHP脚本(一个特定的WordPress模板),当用户点击它时会自动导入和处理图像.问题是图像处理占用大量内存,特别是如果多个用户同时访问模板并启动图像处理.由于这个原因,我的服务器多次崩溃.

我的解决方案是,如果它已经运行,则不执行图像处理功能.在函数开始运行之前,我会检查一个名为image_import_running的数据库条目,看它是否设置为false.如果是,则该函数运行.函数的第一件事就是将image_import_running设置为true.然后,在完成所有操作后,我将其设置为false.

它在理论上很有效.该网站没有崩溃,我可以告诉你.但它有两个主要问题:

  1. 如果用户在加载页面时关闭页面,则脚本永远不会完成处理图像,因此永远不会将image_import_running设置为false.在手动将图像设置为false之前,模板将永远不会再次处理图像.

  2. 如果脚本在处理图像时超时 - 如果队列中有很多图像,这很有可能 - 你的问题基本上与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变量?甘拜下风.

我和你分享了这整个故事,以防你有其他一些出色的解决方案.

php wordpress

6
推荐指数
1
解决办法
2896
查看次数

标签 统计

php ×2

simplexml ×1

wordpress ×1