Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 地理编码不';我现在不工作了_Php_Xml Parsing_Geocoding - Fatal编程技术网

Php 地理编码不';我现在不工作了

Php 地理编码不';我现在不工作了,php,xml-parsing,geocoding,Php,Xml Parsing,Geocoding,我有一个内部站点,它使用php查看我的msql客户数据库。查找未填写lat和lng字段的客户。抓取邮政编码和地理编码,将lat和lng发布回我的数据库,并在地图上标出客户。这是由cron作业每天执行一次。使用GoogleAPI的v.2,这一点很好。从三月或四月起,它就停止了。我猜是因为第三节 Jist my jl_jobscoordinates.cron.php文件在数据库中搜索,查找空lat和lng字段的所有邮政编码。然后从我的geocode.class.php调用一个名为doGeocode的

我有一个内部站点,它使用php查看我的msql客户数据库。查找未填写lat和lng字段的客户。抓取邮政编码和地理编码,将lat和lng发布回我的数据库,并在地图上标出客户。这是由cron作业每天执行一次。使用GoogleAPI的v.2,这一点很好。从三月或四月起,它就停止了。我猜是因为第三节

Jist my jl_jobscoordinates.cron.php文件在数据库中搜索,查找空lat和lng字段的所有邮政编码。然后从我的geocode.class.php调用一个名为doGeocode的函数,该函数使用xml将结果放在一起,并保存lat和lng。在geocodeclass中,它指的是一个m_url,它是保存在我的配置文件中的googleapi url。我已将此url更新为新的v.3 url,即。我的地图已经备份并运行了,只是没有任何东西可以进行地理编码

我将粘贴两个文件jl_jobscooedinates.cron.php和geocode.class.php。我已经注释掉了用于处理旧url的地理代码中的旧xml

我的cron的结果是它没有得到坐标。e、 g.-[3-2013]谷歌找不到此邮政编码:[COO041]测试公司名称,牛津郡OX26 4SS

jl_jobcoordinates.cron.php

require_once("../includes/config.php");     
require_once(_PATH_JMS."/classes/session.class.php");   
require_once(_PATH_JMS."/classes/db.class.php");
require_once(_PATH_JMS."/classes/lib.class.php");
require_once(_PATH_JMS."/classes/security.class.php");
require_once(_PATH_JMS."/classes/emails.class.php");
require_once(_PATH_JMS."/classes/geocode.class.php");

require_once(_PATH_JMS."/services/actiontrail.ds.php"); 
require_once(_PATH_JMS."/services/jobsdue.ds.php"); 

//-----------------------------------------------------
// Main Object Instances - Initialize what we require    
//-----------------------------------------------------

$DB             = new DB();
$Security       = new Security($DB->i_db_conn);
$Lib            = new Lib();
$Session        = new Session();
$ActionTrail    = new ActionTrail($DB, $Session, $Security);
$JobsDue        = new JobsDue($DB, $Session, $Security, $ActionTrail);
$Geocode        = new Geocode($Session, $Security);
$Emails         = new Emails($DB, $Session, $Security);

//-----------------------------------------------------
// Save as a valid system user   
//-----------------------------------------------------

$Session->save('USR_AUTH',_CRON_USER_NAME);
$Session->save('USR_PASS',_CRON_USER_PASS);
$Session->save('USR_IS_EMPLOYED', '1');
$Session->save('CONS',$Session->get('USR_AUTH'));

//-----------------------------------------------------
// Postcodes to Ignore - we cannot geocode these
//-----------------------------------------------------

$m_ignore = array("IRL","IRELAND","IRE","ITA","USA","BEL","EGY","GER","FR","FRA","HOL","POL");

//-----------------------------------------------------
// Get Jobs Due for all consultants for this year and next
//-----------------------------------------------------

$mY = (int) date("Y");

//-----------------------------------------------------
// Find t-cards without lat & lng
//-----------------------------------------------------

$m_errors = array();





for ($y=$mY;$y<=$mY+1;$y++) 
{
    for ($i=1;$i<=12;$i++) 
    {
        $mM = (int) $i; 
        //echo "<br> mM =".$mM ." i =".$i;  
        $mJobs = $JobsDue->getAllJobsDue('%',$mM,$y,'%',NULL,NULL,FALSE); /* DON'T GET MISSED JOBS AS WE WILL START FROM JAN */
        //echo "<br>mJobs =".$mJobs;
        foreach ($mJobs as $row)
        {
            $m_postcode = $Lib->lib_str_clean(trim($row->postcode)); //this loops through each of the records and gets the post codes. m_postcodes are the postcodes found
            echo "<br>m_postcode =".$m_postcode;
            if (($row->latlngexists == 1)||(in_array($m_postcode,$m_ignore))||(in_array($row->card_id,$m_ignore))||(strlen($m_postcode)<=0)) continue;
            if ($Lib->lib_ispostcode($m_postcode)) {
                $m_coordinates = $Geocode->doGeocode($m_postcode);
                echo "<br>m_coords =".$m_coordinates;//nothing displayed
                if ($m_coordinates != NULL) {
                    $DB->setGeoTCard($row->card_id,$m_coordinates['lat'],$m_coordinates['lng']);
                } else {
                    $m_err_desc = sprintf("[%s-%s] Google could not find this Postcode",$mM,$y);

                    $m_error = array(
                        "err_desc" => $m_err_desc,
                        "err_code" => $row->client_code,
                        "err_comp" => $row->title,
                        "err_depo" => $row->description,
                        "err_post" => $m_postcode
                    );
                    $m_errors[] = $m_error;
                    $m_ignore[] = $row->card_id;
                }
                sleep(_GEOCODE_PAUSE);
            } else {
                $m_err_desc = sprintf("[%s-%s] Postcode is invalid please check",$mM,$y);
                $m_error = array(
                    "err_desc" => $m_err_desc,
                    "err_code" => $row->client_code,
                    "err_comp" => $row->title,
                    "err_depo" => $row->description,
                    "err_post" => $m_postcode
                );
                $m_errors[] = $m_error;
                $m_ignore[] = $row->card_id;
            }
        }
    }
}
if (count($m_errors) > 0) {
    $Emails->doGeocodeErrNotify($m_errors);
}
require_once(“../includes/config.php”);
需要一次(_PATH_JMS./classes/session.class.php);
require_once(_PATH_JMS./classes/db.class.php));
require_once(_PATH_JMS./classes/lib.class.php));
require_once(_PATH_JMS./classes/security.class.php));
需要一次(_PATH_JMS./classes/emails.class.php”);
需要一次(_PATH_JMS./classes/geocode.class.php);
需要一次(_PATH_JMS./services/actiontrail.ds.php”);
require_once(_PATH_JMS./services/jobsdue.ds.php”);
//-----------------------------------------------------
//主对象实例-初始化我们需要的
//-----------------------------------------------------
$DB=新的DB();
$Security=新安全性($DB->i\u DB\u conn);
$Lib=newlib();
$Session=新会话();
$ActionTrail=newactiontrail($DB,$Session,$Security);
$JobsDue=newjobsdue($DB、$Session、$Security、$ActionTrail);
$Geocode=新的地理编码($Session,$Security);
$Emails=新电子邮件($DB、$Session、$Security);
//-----------------------------------------------------
//另存为有效的系统用户
//-----------------------------------------------------
$Session->save('USR\u AUTH','u CRON\u USER\u NAME);
$Session->save('USR\u PASS','u CRON\u USER\u PASS');
$Session->save('USR_已使用,'1');
$Session->save('CONS',$Session->get('USR_AUTH'));
//-----------------------------------------------------
//要忽略的邮政编码-我们无法对其进行地理编码
//-----------------------------------------------------
$m_ignore=数组(“IRL”、“爱尔兰”、“爱尔兰”、“ITA”、“美国”、“BEL”、“EGY”、“GER”、“FR”、“FRA”、“HOL”、“POL”);
//-----------------------------------------------------
//获得今年和明年所有顾问的工作
//-----------------------------------------------------
$mY=(整数)日期(“Y”);
//-----------------------------------------------------
//查找不带lat和lng的t卡
//-----------------------------------------------------
$m_errors=array();
对于($y=$mY;$ygetAllJobsDue(“%”,$mM,$y,“%”,NULL,NULL,FALSE);/*不要错过作业,因为我们将从1月1日开始*/
//echo“
mJobs=”.$mJobs; foreach($mJobs作为$row) { $m_postcode=$Lib->Lib_str_clean(trim($row->postcode));//这将循环遍历每个记录并获取邮政编码。m_postcodes是找到的邮政编码 echo“
m_postcode=”.$m_postcode; if($row->latlngexists==1)| |(in_数组($m_postcode,$m_ignore))| |(in_数组($row->card_id,$m_ignore))|(strlen($m_postcode)lib_ispostcode($m_postcode)){ $m_坐标=$Geocode->doGeocode($m_邮政编码); echo“
m_坐标=”.$m_坐标;//未显示任何内容 如果($m_坐标!=NULL){ $DB->setGeoTCard($row->card_id,$m_坐标['lat'],$m_坐标['lng']); }否则{ $m_err_desc=sprintf(“[%s-%s]谷歌找不到此邮政编码”,$mM,$y); $m_错误=数组( “err_desc”=>m_err_desc, “错误代码”=>$row->客户端代码, “err_comp”=>$row->title, “err_depo”=>$row->description, “err_post”=>m_邮政编码 ); $m_errors[]=$m_error; $m_ignore[]=$row->card_id; } 睡眠(地理编码暂停); }否则{ $m_err_desc=sprintf([%s-%s]邮政编码无效,请检查“,$mM,$y); $m_错误=数组( “err_desc”=>m_err_desc, “错误代码”=>$row->客户端代码, “err_comp”=>$row->title, “err_depo”=>$row->description, “err_post”=>m_邮政编码 ); $m_errors[]=$m_error; $m_ignore[]=$row->card_id; } } } } 如果(计数($m_错误)>0){ $Emails->doGeocodeErrNotify($m_errors); }
geocode.class.php

    class Geocode {

private $m_session = NULL;
private $m_security = NULL;

private $m_session_user;
private $m_session_pass;

private $m_key = _GMAP_KEY;
private $m_url = _GMAP_URL;
private $m_res = Array();

public function __construct($p_session,$p_security) 
{
    $this->m_session    = $p_session;
    $this->m_security   = $p_security;  

    $this->m_session_user   = $this->m_session->get('USR_AUTH');
    $this->m_session_pass   = $this->m_session->get('USR_PASS');

    if ($this->m_security->doLogin($this->m_session_user,$this->m_session_pass) <= 0) 
    { 
        return NULL;
        die; 
    } 
}

public function doGeocode($p_postcode)
{
    try {
    //  //$xml = new SimpleXMLElement(sprintf($this->m_url,$p_postcode,$this->m_key),0,TRUE); //OLD FOR V.2
        $xml = new SimpleXMLElement(sprintf($this->m_url,$p_postcode),0,TRUE);

    } catch (Exception $e) {
        echo sprintf('Caught exception: %s', $e->getMessage());
        return NULL;
        die;
    }
    $st = $xml->Response->Status->code;
    if (strcmp($st, "200") == 0) 
    {
        $co = $xml->Response->Placemark->Point->coordinates;
        $cs = preg_split("/[\s]*[,][\s]*/", $co);

        $this->m_res = Array(
                "lng" => $cs[0],
                "lat" => $cs[1],
                "alt" => $cs[2]
            );
        return $this->m_res;
    } else {
        return NULL;
    }
}
class地理编码{
private$m_session=NULL;
私有$m_security=NULL;
私人$m_会话_用户;
私人$m_会议通行证;
私有$m_密钥=_GMAP_密钥;
私有$m_url=_GMAP_url;
private$m_res=Array();
公共函数构造($p_会话,$p_安全性)
{
$this->m_session=$p_session;
$this->m_security=$p_security;
$this->m_session\u user=$this->m_session->get('USR_AUTH');
$this->m_session_pass=$this->m_session->get('USR_pass');
如果($this->m\u security->doLogin($this->m\u session\u user,$this->m\u session\u pass)m\u url,$p\u postcode,$this->m\u key),0,TRUE);//旧
/**
* Geocode postcode to get long/lat used when adding suppliers and sites
* @param - $postcode - string - Input post code to geocode
* @return - $lat,$long - array - array containing latitude coords
*/
function geocode($postcode) {
    $postcode = urlencode(trim($postcode)); // post code to look up in this case status however can easily be retrieved from a database or a form post
    //$request_url = "http://maps.googleapis.com/maps/api/geocode/xml?address=".$postcode."&sensor=false"; // the request URL you'll send to google to get back your XML feed
    define("MAPS_HOST", "maps.google.co.uk");
    define("KEY", "YOUR API KEY HERE");
    $base_url = "http://" . MAPS_HOST . "/maps/geo?output=xml" . "&key=" . KEY;
    $request_url = $base_url . "&q=" . $postcode;
    $xml = simplexml_load_file($request_url);
    $status = $xml->Response->Status->code;
    if (strcmp($status, "200") == 0) {
      // Successful geocode
      $geocode_pending = false;
      $coordinates = $xml->Response->Placemark->Point->coordinates;
      $coordinatesSplit = explode(",", $coordinates);
      // Format: Longitude, Latitude, Altitude
      return array("lat"=>$coordinatesSplit[1],"long"=>$coordinatesSplit[0]);
    } else {
      return array("lat"=>0,"long"=>0);
    }
}