动态创建的目录在1000次

时间:2015-10-27 15:35:43

标签: php arrays debugging dynamic path

我正在修复一些旧代码,该代码应根据客户的姓氏为客户创建目录。 1000次中的999次按预期工作但偶尔会出现“无法创建基本目录”错误消息,调试显示$file_directory在这种情况下只是"Array"而不是类似于"\\network\path\order_data\1234567890_Smith"

有没有人可以解释这段代码在绝大部分时间内是如何工作的,但仍然会导致大约0.1%的实例失败?或者它不是代码?谢谢!

注意:我最初没有编写此代码,但我希望尽可能接近原始代码

编辑我之前的代码中有一个拼写错误,但我认为tliokos和Fluinc有一个非常好的观点,但只是想解决我的错误

代码:

<?php

$file_directory = build_directory($customer, $UID); 

    if(!is_dir($file_directory)){   //Check to make sure it does not already exist
        if(!mkdir($file_directory)){    
            mail("debug@example.com","Unable to create base directory","$file_directory");
        }
    }

function build_directory($customer, $UID){

    if($customer->related_orders){
        $related = explode(",", $customer->related_orders);

        foreach($related as $r_UID){
            $rel_order = get_order($r_UID); //fetches order object

            if((isset($rel_order->file_directory) && $rel_order->file_directory != "")){
                return $rel_order->file_directory;
            }
        }
    }

//Here is where I made my correction
        $paths = array('\\\\network\\path');
        $base = $paths[0];


        //Test if directory is already assigned
        if(is_dir($base . "\\order_data\\".$UID."_".str_replace(" ","_",$customer->last_name)."\\")){ 
            return $base . "\\order_data\\".$UID."_".str_replace(" ","_",$customer->last_name)."\\";
        }

        if($base){
            return $base . "\\order_data\\".$UID."_".str_replace(" ","_",$customer->last_name)."\\";
        }

    }

    ?>

3 个答案:

答案 0 :(得分:1)

更改$ base = array('\\ network \ path');
To $ base ='\\ network \ path';

答案 1 :(得分:1)

我认为问题出在build_directory()函数中,更具体地说是在第一个if之后。

因此,如果客户没有相关订单,那么您正在尝试使用字符串连接数组,结果就像

Array\order_data\....

尝试更改

$base = array('\\network\path');

$base = '\\network\path';

答案 2 :(得分:0)

因此问题最终与框架/用户相关。 我们发现,如果用户在创建目录期间刷新页面,它将创建两次相同的目录,我们的框架将保存为相同路径的数组。