We have an export job that grabs and worked flawlessly up until an upgrade this last weekend.
We upgraded from 10 to 11 and all the subsequent updates.
Basically the user specifies a date range on our external website, which then hits the code igniter framework (on the internal web server) to instantiate FileMaker.php and grab the records and serve them back to the external website.
Like I said, this all worked well prior to our upgrade over the weekend.
I JUST inherited this whole system, I know very little about FileMaker but have been reading and testing. Sample FileMaker code works, is able to list databases.
Parts involved:
CodeIgniter Framework
FileMaker.php
Two web servers: Filemaker web server (db.mydomain.net) and client web server (www.mydomain.com)
Now, when attempting to perform the export we get a CodeIgniter formatted general error that the connection to the database was closed unexpectedly. In other instance we get Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.
Am I missing something obvious? As a FileMaker n00b I'm sure I probably am, but your feedback would be very helpful. I'll seriously paypal you some beer money :-)
Here is my controller code (which is unchanged and was working just fine prior to the upgrade:
<?php
class Paid_calendar extends Controller {
protected $fm, $main_menu, $current_only;
function __construct()
{
parent::__construct();
$this->load->helper('file');
$this->load->database();
require_once("FileMaker.php");
$this->fm = new FileMaker('IssueAds Index', 'http://db.mydomain.net' 'phpuseraccount', 'thepassword');
$this->main_menu = new FileMaker('Main Menu', 'http://db.mydomain.net' 'phpuseraccount', 'thepassword');
$this->load->model('Event');
$this->current_only = false;
//$this->load->model('photo', '', true);
}
public function currentOnly(){
$this->current_only = true;
$this->index();
}
function index()
{
$issue_data = $this->Event->getCurrentIssue();
$current_issue = $issue_data->display;
$this->output->enable_profiler(TRUE);
echo "Starting: ".date_create()->format('m-d-Y h:i:s A')."\n";
echo "Issue".$current_issue."\n";
if($current_issue == "16.50" || $current_issue == "16.49"){
$current_issue = "16.51";
}
//$layout =& $this->fm->getLayout("Issue Ad Search");
//print_r(array_keys($layout->getFields() ) );
$findCommand =& $this->fm->newFindCommand('Issue Ad Search');
if($this->current_only){
$findCommand->addFindCriterion("Issue ID", "{$current_issue}");
}
else{
$findCommand->addFindCriterion("Issue ID", ">={$current_issue}");
}
$findCommand->addFindCriterion("Ads::Ad Code ID", '69...99');
//$findCommand->addFindCriterion("cIsActive", 'Active');
$result = $findCommand->execute();
if (FileMaker::isError($result)) {
echo "Error: " . $result->getMessage() . "\n";
exit;
}
echo $result->getFetchCount();
$records = $result->getRecords();
$issues = array();
$ad_codes = array();
$paid_events = array();
foreach ($records as $record) {
$out = new StdClass();
$out->is_active = $record->getField("cIsActive");
$out->name = $record->getField("Ads::Field_Headline");
$out->description = $record->getField("Ads::Field_Ad Copy");
$out->ad_code = $record->getField("Ads::Ad Code ID");
$out->issue_display = $record->getField("Issue ID");
//echo $out->issue_display;
if(strlen($out->issue_display) == 4){
$out->issue_display .= "0";
}
$issue_append = str_replace(".", "", $out->issue_display );
$out->fm_ad_id = $record->getField("Ad ID").$issue_append;
$issues[] = $out->issue_display;
$ad_codes[] = $record->getField("Ads::Ad Code ID");
$paid_events[] = $out;
}
$issues = $this->Event->getIssueInfo($issues);
$ad_codes = $this->Event->getAdCodeInfo($ad_codes);
foreach($paid_events as $event){
$event->description = str_replace("<", "<", $event->description);
$event->description = str_replace(">", ">", $event->description);
$event->sub_section_id = $ad_codes[$event->ad_code];
$event->start_date = $issues[$event->issue_display]->start_date;
$event->end_date = $issues[$event->issue_display]->end_date;
$event->repeat_type = 'daily';
$event->repeat_frequency = 1;
$event->paid = 1;
$event->all_day = 1;
$event->repetition_id = NULL;
$event->status = 'approved';
$old_event = $this->Event->exists($event->fm_ad_id);
if($event->is_active == false){
if($old_event != false){
$this->Event->delete($old_event);
echo "Deleted {$old_event->fm_ad_id}\n";
}
continue;
}
unset($event->ad_code);
unset($event->issue_display);
unset($event->is_active);
// print_r($event);
if($old_event != false ){
$this->Event->update($event, $old_event);
echo "Updated {$event->fm_ad_id}<br />";
}
else{
$this->Event->insert($event);
echo "Inserted {$event->fm_ad_id}<br />";
}
echo "\n";
}
echo "Regenerating Cache Table\n";
echo system("curl -f http://www.mydomain....rateCacheTable");
echo "Cache Table Complete\n";
echo "Complete";
}
}
/* End of file welcome.php */
/* Location: ./system/application/controllers/welcome.php */