Skip to main content

Coding: Hide function name

/**
     * [__call description]
     *
     * @param string $method    HTTP Methods
     *
     * @param string $arguments Arguments
     *
     * @return Response
     */
    public function __call($method, $arguments)
    {
        if (in_array($method, array('simple_get', 'simple_post', 'simple_put', 'simple_delete'))) {
            // Take off the "simple_" and past get/post/put/delete to _simpleCall
            $verb = str_replace('simple_', '', $method);
            array_unshift($arguments, $verb);
            return call_user_func_array(array($this, '_simpleCall'), $arguments);
        }
    }

So with call name simple_get() it translated to simpleFtpGet()
https://github.com/mogetutu/simplePHP-curl/blob/master/libraries/Curl.php


FTP CURL Download:

$local_file = "/tmp/filename.flv";//This is the file where we save the information
$remote_file = "http://www.test.com/filename.flv"; //Here is the file we are downloading


$ch = curl_init();
$fp = fopen ($local_file, 'w+');
$ch = curl_init($remote_file);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_exec($ch);
curl_close($ch);
fclose($fp);

List file: 
Use option LIST ONLY

// CURL ext instead of FTP. FTP php has some limit with NAT client and Active mode FTP server.
protected function curl_ftp_get($ftp, $user_id, $last_update)
{
if(empty($user_id)) {
return;
}
$local_path = resource_path('CRAWL_DATA'.DIRECTORY_SEPARATOR.'SWT_DRX'.DIRECTORY_SEPARATOR.$user_id.DIRECTORY_SEPARATOR);

if (!file_exists($local_path) && !is_dir($local_path)) {
mkdir($local_path, 0777, true);
}

$url = $ftp['server'];
// If there is no ftp:// or any protocol entered, add ftp://
if ( ! preg_match('!^(ftp|sftp)://! i', $url))
{
$url = 'ftp://' . $url;
}

// Use an FTP login
if ($ftp['username'] != '')
{
$auth_string = $ftp['username'];

if ($ftp['password'] != '')
{
$auth_string .= ':' . $ftp['password'];
}

// Add the user auth string after the protocol
$url = str_replace('://', '://' . $auth_string . '@', $url);
}

// Add the filepath
// $url .= $file_path;

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_FTPLISTONLY, 1);
curl_setopt($curl, CURLOPT_USERPWD, '"'.$ftp['username']. ':'. $ftp['password']. '"'); //"jonthompson:3lHwzN5l"
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// curl_setopt($curl, CURLOPT_VERBOSE, 1); // Be carefull
// curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
// curl_setopt($curl, CURLOPT_TIMEOUT, 1);
// curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0);
curl_setopt($ch, CURLOPT_TIMEOUT, 600);

$response = curl_exec($curl);

// Request failed
if ($response === FALSE)
{
// TODO handle msg error, use session to store option. curl_errno, curl_error
return FALSE;
}

// Request successful
else
{
// list file server
$return = trim($response);
$files = explode("\n", $return);
// filter file by timestamp
if($last_update) {
$newData = self::filterFileByTime($files, $last_update);
$files = array_values($newData);

// download file
curl_setopt($curl, CURLOPT_FTPLISTONLY, 0); // Disable list file. download it.
curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
foreach($files as $file) {
$location = $url.'/'.$file;
curl_setopt($curl, CURLOPT_URL, $location);
curl_exec($curl);
}

}
curl_close ($curl);
// dd($files);
}

curl_close ($curl);

return;
}

Comments

Popular posts from this blog

AWS Elasticache Memcached connection

https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/accessing-elasticache.html#access-from-outside-aws http://hourlyapps.blogspot.com/2010/06/examples-of-memcached-commands.html Access memcached https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/GettingStarted.AuthorizeAccess.html Zip include hidden file https://stackoverflow.com/questions/12493206/zip-including-hidden-files phpmemcachedadmin ~ phpMyAdmin or phpPgAdmin ... telnet mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 11211 stats items stats cachedump 27 100 https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/VPCs.EC.html https://lzone.de/cheat-sheet/memcached VPC ID Security Group ID (sg-...) Cluster: The identifier for the cluster memcached1 Creation Time: The time (UTC) when the cluster was created January 9, 2019 at 11:47:16 AM UTC+7 Configuration Endpoint: The configuration endpoint of the cluster memcached1.ahgofe.cfg.usw1.cache.amazonaws.com:11211 St...

Notes Windows 10 Virtualbox config, PHP Storm Japanese, custom PHP, Apache build, Postgresql

 cmd => Ctrl + Shift + Enter mklink "C:\Users\HauNT\Videos\host3" "C:\Windows\System32\drivers\etc\hosts" https://www.quora.com/How-to-create-a-router-in-php https://serverfault.com/questions/225155/virtualbox-how-to-set-up-networking-so-both-host-and-guest-can-access-internet 1 NAT + 1 host only config https://unix.stackexchange.com/questions/115464/how-to-properly-set-up-2-network-interfaces-in-centos-running-in-virtualbox DEVICE=eth0 TYPE=Ethernet #BOOTPROTO=dhcp BOOTPROTO=none #IPADDR=10.9.11.246 #PREFIX=24 #GATEWAY=10.9.11.1 #IPV4_FAILURE_FATAL=yes #HWADDR=08:00:27:CC:AC:AC ONBOOT=yes NAME="System eth0" [root@localhost www]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 # Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth1 IPADDR=192.168.56.28 <= no eff => auto like DHCP #GATEWAY=192.168.56.1 #BOOTPROTO=dhcp BOOTPROTO=static <= no eff ONBOOT=yes HWADDR=08:00:27:b4:20:10 [root@localhost www]# ...

Rocket.Chat DB schema

_raix_push_notifications avatars.chunks avatars.files instances meteor_accounts_loginServiceConfiguration meteor_oauth_pendingCredentials meteor_oauth_pendingRequestTokens migrations rocketchat__trash rocketchat_cron_history rocketchat_custom_emoji rocketchat_custom_sounds rocketchat_import rocketchat_integration_history rocketchat_integrations rocketchat_livechat_custom_field rocketchat_livechat_department rocketchat_livechat_department_agents rocketchat_livechat_external_message rocketchat_livechat_inquiry rocketchat_livechat_office_hour rocketchat_livechat_page_visited rocketchat_livechat_trigger rocketchat_message rocketchat_oauth_apps rocketchat_oembed_cache rocketchat_permissions rocketchat_raw_imports rocketchat_reports rocketchat_roles rocketchat_room rocketchat_settings rocketchat_smarsh_history rocketchat_statistics rocketchat_subscription rocketchat_uploads system.indexes users usersSessions https://rocket.chat/docs/developer-guides/sc...