Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Thursday, 1 November 2018

FabFitFun revenue surpasses $200 million as it hits million customer milestone

At least one million people will be receiving the next FabFitFun box as the Los Angeles company surpasses $200 million in revenue and continues its run as one of the startups to watch in the Los Angeles tech community. 

As it renews its focus on media — doubling down on new programming in a bid to reach further into repeatable revenue through subscriptions that encompass more than just retail — the company is trying to frame itself as more than just makeup and accessories in a box.

“When we think of the potential behind the business … there are a few businesses in the world for whom membership is a no brainer. Netflix is, Spotify is and we think FabFitFun is a no brainer,” said Daniel Broukhim co-founder and co-chief executive of FabFitFun. 

The company’s reach spans demographics and geography, according to co-chief executives (and brothers) Daniel and Michael Broukhim, with users ranging in age from 15 to 85 and subscriptions covering all 50 states.

FabFitFun is truly for every woman – whether you are a millennial, a mom of three, or a fashion-forward 50 year old; we see this milestone as a celebration of the diversity of our members and that’s why we launched the #IamFabFitFun initiative,” said Katie Rosen Kitchens, the company’s other co-founder and editor in chief, in a statement. “We have members from all walks of life – from nurses to lawyers, software developers, police officers, makeup artists, fashion designers, dog walkers, interior designers and more.”

It began as a media business reviewing new products and has only taken on a small amount of venture funding since its inception, but the business has become a social phenomenon and has moved into retail, launching brands like ISH, Summer & Rose and Chic & Tonic.

There will be a pop up with Macy’s department stores in the holiday season to merge the subscription business with brick and mortar retailers and the company is expanding further into health and wellness.

“We think about it in the context of a lifestyle,” said Michael Broukhim. “We’ve only been doing a low level pilot on the fashion side. In the food space we’ve had snack vendors who have snacks in the main box. There’s a FabFitFun way to shop, [with] a discovery orientation. We do the heavy lifting for you and become storytellers in curating your life for you.”

The goal is to become a curator for more of its members’ interests, he said. “We want to do that for pretty much everything that someone consumes,” Michael said. “There’s the everything approach where you know what you want and you type it in and you get it and you click it and you get it delivered in maybe two days. Then there’s the FabFitFun approach…. it’s a trusted relationship where we learn about all the time and put as much of the process on autopilot as possible.”

With all of that, replenishment is not a focus for the company at the moment. “It’s upside for our brand partners,” said Daniel. “We’re helping their products get discovered. Then those members go to the brand partners and can continue on those relationships.”



from TechCrunch https://ift.tt/2Qci2Ox
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support