text:
Good bye Foo Fighters :(
Hey everyone…
Dave here. Just wanted to write and thank you all again from the bottom of my heart for another incredible year. (Our 18th, to be exact!) We truly never could have done any of this without you…
Never in my wildest dreams did I think Foo Fighters would make it this far. I never thought we COULD make it this far, to be honest. There were times when I didn't think the band would survive. There were times when I wanted to give up. But… I can't give up this band. And I never will. Because it's not just a band to me. It's my life. It's my family. It's my world.
Yes… I was serious. I'm not sure when the Foo Fighters are going to play again. It feels strange to say that, but it's a good thing for all of us to go away for a while. It's one of the reasons we're still here. Make sense? I never want to NOT be in this band. So, sometimes it's good to just… put it back in the garage for a while…
But, no gold watches or vacations just yet… I'll be focusing all of my energy on finishing up my Sound City documentary film and album for worldwide release in the very near future. A year in the making, it could be the biggest, most important project I've ever worked on. Get ready… it's coming.
Me, Taylor, Nate, Pat, Chris, and Rami… I'm sure we'll all see you out there… somewhere…
Thank you, thank you, thank you…
19 Notes/ Hide
- hakujitsumu likes this
- justabeautiful-letdown reblogged this from lilrpharmintern
- lilrpharmintern reblogged this from artistiology
- eddiepearson likes this
- artistiology reblogged this from jungleindierock
- orangesharks reblogged this from jungleindierock
- yeahitschris reblogged this from iconclude
- iconclude reblogged this from jungleindierock
- vanillyze reblogged this from jungleindierock
- that-guy-with-a-turban reblogged this from jungleindierock
- msmagoo likes this
- cries-for-anger reblogged this from jungleindierock
- vakarianshepard reblogged this from jungleindierock
- renamok likes this
- jungleindierock posted this


text:
HomeStore LocatorWeekly AdsCouponsGift CardsContact UsMy Publix
Publix currently has the following openings in South Carolina. South Carolina jobs vary from time to time based on our current openings. Please check back often for new South Carolina job openings to find a career that is right for you. Thank you for considering a career in South Carolina at Publix.
Publix Jobs@PublixJobs

subset: commoncrawl


text:
FabricMate fabric markers means no clean up and no mess. Six Fluorescent colors. Permanent color. The fabric dye is semi-permanent after drying so no ironing is required.
Use these markers to create a design on the Mona Lisa panels or fill in the Hope panel for a fun look on school days.


text:
By Wednesday morning the rains had passed through and it was a cool and sunny morning. Thanks to the efforts of the Motor City Car Club who worked all day on Tuesday to solve problems experienced by one of the Road Tourians, everyone had made it to Gananoque at the Canada/U.S. border. While we enjoyed our time in Canada it was a good feeling to be crossing the bridge and knowing that you were back home.
Our first stop was the Antique Boat Museum in Clayton, New York, just 10 minutes from the border. Even the non-boaters in our group could appreciate the beauty and craftsmanship of the watercraft on display. It was a great way to start the day on the Megaspeed Tour.
It was a short 45-minute drive to Fort Drum, the huge Army base near Watertown, New York. About two years ago at the Syracuse Nationals I had been approached by Dale Greening. Dale is a civilian helicopter mechanic at Fort Drum. Dale invited me to bring a Road Tour to the base to visit the troops and see the equipment that was being used in Afghanistan. Dale explained that the helicopters from Fort Drum would be returning soon and he felt that the troops and their families would enjoy seeing our cars. He also felt that we would appreciate a close-up look at equipment that was being used by our soldiers half way around the world. From that conversation two years ago and Dale Greening's hard work and persistence we were now on our way to Fort Drum for an amazing afternoon.
Our first stop was the Heritage Center on the base. From there we drove to the actual airfield where the Chinook, Apache, Black Hawk, and Kiowa helicopters are based. It was an amazing sight as we were greeted by the troops along the runways while we drove by these incredible pieces of sophisticated equipment. We were led into an open hanger and parked our cars. It was a scene and a moment that will be a lasting memory for all of us. The troops were anxious to see our cars and we could not believe we were actually so close to the helicopters and the men and women who fly and maintain them. Cameras were out all afternoon as we took pictures of the activities going on all around. Some of the Road Tourians got a chance to get into the flight simulators where the pilots train. It was a breathtaking afternoon. Many thanks to Dale Greening who had the vision and to the folks on the base who helped make this all happen. We attended a local cruise in our honor Wednesday evening to top off an incredible day.
Thursday morning it was time to get to our weekend destination of Burlington, Vermont, for the NSRA Northeast Nationals Plus. The route took us through Lake Placid, New York, the site of the 1932 and 1980 Olympics. Upon reaching the Vermont border and the banks of the southern part of Lake Champlain we boarded a ferry for the short 20-minute boat ride. We reached Burlington by mid afternoon. It had been a gorgeous drive.
Our journey was complete but the fun of a weekend at the NSRA Northeast Nationals Plus was ahead as we spent the weekend at the Champlain Valley Expo Center.
It was a great weekend at the NSRA Northeast Street Rod Nationals Plus. There were over 1,400 registered vehicles and plenty of spectators all weekend to enjoy them. Saturday evening the participants on the Steele Rubber Products Triple Crown Challenge got together for a final meal as a group. Six vehicles with eleven participants completed the three back-to-back-to-back Road Tours. NSRA awards were announced at 2 p.m. on Sunday. Three of our Road Tourians were singled out for special recognition. This makes the seventh tour in the books for the 2012 season. Go to streetrodder.com for extended coverage of the Megaspeed Road Tour and a schedule and registration form for the upcoming 2013 Road Tour season.


text:
The National Weather Service in Grand Rapids and northern Indiana issues a SEVERE THUNDERSTORM WATCH for Van Buren, Kalamazoo, Calhoun, Berrien, Cass, St. Joe, and Branch counties until 10 PM. Damaging wind gusts of 60 mph or greater are the primary concern. Large hail of 1" in diameter or larger is a close second. We'll be tracking storm development with Live Doppler Radar throughout your afternoon and evening. Storm motion is easterly at 30 to 50 mph. Stay with wwmt.com for the latest weather information!
Health Matters
Terms & Conditions
Copyright Notices
Privacy Policy
Contact WWMT Newschannel 3
FCC Public File
EEO Public File Report
Copyright ©2014, WWMT-TV | Portions are Copyright 2014 Associated Press. All rights reserved. This material may not be published, broadcast, rewritten, or distributed.
WWMT-TV Newschannel 3 provides local news, weather forecasts, notices of events and entertainment programming for Kalamazoo, Grand Rapids, Battle Creek, South Haven, Paw Paw, Portage, Otsego, Texas Township, Oshtemo, Plainwell, Allegan, Holland, Saugatuck, Holland, Wayland, Kentwood, Middleville, Hastings, Marshall, Three Rivers, Sturgis, Constantine, Coldwater, Albion, Wyoming, Hudsonville, Allendale, Byron Center, Hudsonville, Grand Haven, Muskegon, Sparta, Rockford, Belding, Greenville, Ionia, Cedar Springs and their surrounding areas.


text:
Critics' Rating:
User Rating:
2 ratings
Your Rating:Write a review
PG,1hr 34min
Synopsis: Following up his debut, Young Einstein (1988), Yahoo Serious wrote, directed and starred in this broad comedy as the titular hero, a modern-day, fictional descendant of a real-life Australian Robin Hood, Ned Kelly. Carrying on the family tradition of stealing from the rich and giving to the poor, Ned crosses the wealthy Sir John (Hugo Weaving), who arranges the sale of Kelly's coastal property to a Japanese buyer. Forbidden by the Kelly family code of honor from stealing to profit himself, the motorcycle-riding ... Full Synopsis


text:
Reader Comments (Page 1 of 1)
I know it might be a major undertaking but the right thing to do would be let people who bought any PvP gear in the last week or so be able to return it within 2 hours (or whatever) of logging in. That or refund the honor that you spent on the old gear. I feel bad for the people who only have a limited time to play or only play PvP. I have a feeling if they don't get this right they could easily lose another 500k subs.


text:
--New-business-value growth comes on the back of strong markets in Hong Kong, China and elsewhere in Asia
--AIA chief executive says "macroeconomic fundamentals in Asia remain robust"
--Annualized new premiums grew 21% to US$839 million.
(Updates with share price move, adds comment from AIA )
By Enda Curran
HONG KONG--AIA Group Ltd.'s (1299.HK, AAGIY) new-business value rose to a record high during its third quarter, driven by strong growth in markets such as Hong Kong, China and South East Asia.
The pan-Asian insurer's strong performance came as economies and financial markets across Asia ran into severe headwinds during the period. Expectations that the U.S. Federal Reserve would start to wind down its massive bond-buying program, which has long supported growth around the world, jolted currency markets and hurt economies across Asia.
But Chief Executive Mark Tucker played down fears of a hard landing in Asia and said growth prospects for China and Japan have improved.
"Macroeconomic fundamentals in Asia remain robust," AIA said in a statement to investors on the group's third-quarter performance. "Demographic drivers remain strong and we are confident in the immense growth potential for life insurance in Asia."
The world's fourth-largest insurer by market capitalization said its new-business value, a key measure of insurers' profitability, jumped by 26% to US$379 million in the three months to the end of August from a year earlier. Analysts had expected growth of 20%. The value of new-business margins grew by 2.1 percentage points.
Annualized new premiums, a measure of new business activity, grew 21% to US$839 million.
Shares in the insurer rose 1.7% early Friday to trade at HK$39.
"We find the continued strong growth in volumes positive given margin expansion has a limited lifetime in terms of driving new-business-value growth," said Arjan van Veen, an analyst at Credit Suisse.
AIA operates in 17 markets across the Asia-Pacific region and is the only wholly foreign-owned insurer in China. The life insurer has been steadily adding assets across the region. In July, Mr. Tucker told reporters the insurer's balance sheet will allow it to buy rivals.
The insurer has beaten estimates over the past two years and its share price has soared since its initial public offering in Hong Kong in October 2010, when former parent American International Group Inc. (AIG) sold around two-thirds of its stake in the company.
Write to Enda Curran at email@example.com
Subscriber Content Read Preview
Subscriber Content Read Preview
Subscriber Content Read Preview


text:
The president's cavalier bet
Obama is focused on 2014, not the US economy.
Either someone knows something about a deal in Washington, or we are beyond complacency and have decided that, whatever happens to the bond market because of the debt talks, it doesn't matter.
How else could we not have given up the gains from the other day -- gains based on a compromise that would have forestalled default?
Now, it is true that the senators are talking. But without someone from the White House being involved, you have to believe that nothing can get done. From what we can tell, President Barack Obama's stance is that the debt ceiling must be raised, the government must be opened and nothing has to be given up. To me, that's a statement that says the American people and the people of the world are being held hostage by the government. But the president will be able to portray it as being held hostage by the minority of the Republicans, because the position on the other side of the trade -- the Republican side -- is too difficult to understand.
The president will be able to say, "I want to send those Social Security checks out, but John Boehner and the radical Republicans won't let me."
What's weird is that the market is acting as if, at the last minute, the Republicans will simply say: "We lose. We've accomplished nothing, and now we are all going to go back to being a minority party in the country even as we are the majority party in the House." The president is betting that the GOP will avoid the third rail or lose a huge number of seats next year -- this is all about 2014, and not about the U.S. economy, which could go down for the count by next week -- because he will say the GOP kept you from your check.
I think that's way too cavalier of the president. The GOP has so far not taken any stance that involves anything other than "We will give you a couple of weeks, and then we will do this again." That is a nonstarter. I think the president has the upper hand, because he doesn't care about the economy or the stock market -- he just cares about unilateral victory -- and it isn't as if the press is going to call him out on it. After all, other than a few people at various Murdoch enterprises and a commentator here or there, I don't know a soul in the media who thinks the Tea Party is anything but the worst the American people have to offer.
So it is hard for me to envision a case in which the market shouldn't be down much more as we approach the debt ceiling deadline. It should be falling at least as much as it has gained, if not more so, because the downside is asymmetrical. The dip seems too shallow without more concrete information that I think no one actually knows.
More from TheStreet.com
|Jim CramerTheStreetcom
-- Oversaw the first ever fiscal downgrade
-- Oversaw China replace the US as the world's largest economy
-- Oversaw the dollar replaced as the world's currency
-- Made the US the laughing stock of the World
-- Made the US a reviled country
-- Increased America's poverty, where 20 million people go hungry
-- Gives away billions to often countries who hate America
-- Shamed America for wanting to invade Syria
-- Was shamed by the Russian President and German Chancellor over leadership qualities
-- (there are many more)
Sadly, Mr Obama (the 'yes we can' President is rapidly becoming the most unpopular President in history)
And the Repubs are no different - all of their focus is on 2014 and 2016, and they aren't willing to realistically address any long term solution to our weak economy in the meantime. Ted Cruz won a 2016 straw poll over the weekend. What the hell is the point of having a presidential straw poll a full year before the mid-term elections?
Both parties are only interested in short term extensions for everything - budgets, debt ceiling, sequester, tax policy, etc.... They are too paralyzed and polarized to come up with any substantive long-term reforms or solutions.
We have to find a way to break out of this constant and never-ending, 24-7-365 election cycle, and the only way we can do that is by voting out the establishment and voting in a bunch of 3rd party candidates.
We are currently the most hated, most maligned, most ill-governed country in the world. The country is about how much we make the middle class suffer. Our taxes are worse than burdensome, they are crippling. The rich pay little or no taxes and the poor get back more than pay in. That leaves the middle class to foot the bill for all. Until the government realizes that you cannot destroy the middle class without consequences, we will never again lead the world in anything.
I encourage EVERYONE to vote out all sitting Congressmen. Hey, can it get worse???
next time up i agree. what in the world is going on?! how can we be initiated with so much debt but not want to make spending concessions to help bring that debt down (military cuts, nation building overseas cuts, entitlement cuts and so on)? is there something we don't know? an ace in hand? are we OK as a gov't with all this debt because as a country we have so many assets that we could knock all those trillions of dollars out if we really need too?
if not...then again...what in the world? where is common sense?!
Here's an idea. Let's extend everything as is until Dec. 2016. No increases no decreases.
Vote all the bums out of office and let the next group understand that they are next, unless they do it better than the previous bums.
It make take a few voting cycles but maybe they will understand that "We the People" control their fate.
Oh hey!! We didn't forget that last raise you approved either!!!
This author has got it right. President Obama wants to rule the world. It is time for the American people to take back this country. We should not let President Obama get by with his tactics. This only proves that he will not compromise and he is not concerned with the livelihood of the American people or those in the world unless he gets his way. It is time to set aside difference between Democrats and Republicans and let all our voices be heard. The Affordable Care Act is illegal because it was suppose to be voted on by the PEOPLE OF THE UNITED STATES who are registered voters. So this Act has to go because the majority of the American people do not want this, and never wanted it.
President Obama is about lying to the American people and those leaders in the world. Presdent Obama needs to be IMPEACH for violating the AMERICAN PEOPLE'S RIGHT OF THE FREEDOM TO VOTE. I believe with all my heart, and it doesn't matter what political stance you take, THAT AMERICANS LOVE THEIR COUNTRY AND BELIEVE IN THEIR FREEDOMS THAT MEN AND WOMEN DIED FOR.
We have a President that just says things to make this country do what he wants. This is not leadership and it is no way to run a country. TAKE A STAND AMERICA AGAINST OBAMA AND MAKE HIM ABOLISH THE AFFORDABLE CARE ACT WE DIDN'T GET TO VOTE ON.
It really is not that difficult to understand. There are two groups on the republican side. The career politician republicans who were brought on for the long haul with the direct purpose of "BETTERING the country" (this is up for debate whether either side is benefiting the country). Collaboration should be expected from these Republicans.
The other group are the Tea Party Republicans. There purpose is to CHANGE the country. They were voted in because they ran on a platform of lower taxes, lower spending, and smaller government. Many of them said that they were going to do whatever it took to change Washington. Now whether or not you agree with this philosophy, it is what it is. Why would they collaborate and try to meet half way with Democrats when they campaigned that they wouldn't. Hell, if this were the case they should of just voted normal Republicans in.
(I'm an Independent who does not support Republicans or Democrats)
Copyright © 2014 Microsoft. All rights reserved.
Fundamental company data and historical chart data provided by Morningstar Inc. Real-time index quotes and delayed quotes supplied by Morningstar Inc. Quotes delayed by up to 15 minutes, except where indicated otherwise. Fund summary, fund performance and dividend data provided by Morningstar Inc. Analyst recommendations provided by Zacks Investment Research. StockScouter data provided by Verus Analytics. IPO data provided by Hoover's Inc. Index membership data provided by Morningstar Inc.
New study finds members of this global elite are stashing an average $600 million each in cash -- 10 times more than a year ago.
Top Stocks provides analysis about the most noteworthy stocks in the market each day, combining some of the best content from around the MSN Money site and the rest of the Web.
Contributors include professional investors and journalists affiliated with MSN Money.
Follow us on Twitter @topstocksmsn.


text:
Visit our gallery of featured custom computer systems configured by actual customers and built by us:
Featured Builds Gallery
Discuss on Forum
Discuss on Forum
Based on Clevo P151EM (same as NP9130), world's first 15.6" Intel® future generation Core™ i7 platform with NVIDIA® GeForce® GTX 670MX graphics, this custom notebook designed to provide powerful energy-efficient performance so you can do more at once without slowing down.
NVIDIA® Optimus™ Technology
NVIDIA® Optimus™ technology intelligently optimizes your notebook PC, providing the outstanding graphics performance you need, when you need it, all the while extending battery life for longer enjoyment.
Killer™ Wireless-N high-performance Wi-Fi® Adapter
NVIDIA® GeForce® GTX 670MX Graphics
Intel® Smart Response Technology
Intel® Smart Response Technology is an Intel® Rapid Storage Technology (RST) caching feature that improves computer system performance. It allows a user to configure computer systems with an SSD used as cache memory between the hard disk drive and system memory. This provides the advantage of having a hard disk drive (or a RAID volume) for maximum storage capacity while delivering an SSD-like overall system performance experience. Intel® Smart Response Technology caching is implemented as a single drive letter solution; no additional drive letter is required for the SSD device used as cache.
HDMI (High-Definition Multimedia Interface) is the first and only industry-supported, uncompressed, all-digital audio/video interface. By delivering crystal-clear, all-digital audio and video via a single cable, HDMI dramatically simplifies cabling and helps provide consumers with the highest-quality home theater experience. HDMI provides an interface between any audio/video source, such as a set-top box, DVD player, or A/V receiver and an audio and/or video monitor, such as a digital television (DTV), over a single cable. HDMI supports standard, enhanced, or high-definition video, plus multi-channel digital audio on a single cable. It transmits all ATSC HDTV standards and supports 8-channel, 192kHz, uncompressed digital audio and all currently-available compressed formats (such as Dolby Digital and DTS), HDMI 1.3 adds additional support for new lossless digital audio formats Dolby® TrueHD and DTS-HD Master Audio™ with bandwidth to spare to accommodate future enhancements and requirements.
Customize it for your needs
We offer an extensive selection of notebook components through the convenient system configurators allowing to build broad spectrum of custom notebooks up to the high-end level. Starting configurations of our custom notebooks include notebook barebone, CPU, memory, hard drive and optical drive. By using the configurator located on this page you can upgrade and downgrade components to fit this purchase into your budget and requirements. Besides the configurator, you can also add other components to your cart and we will install them as well. Our custom notebooks come assembled and tested with warranty. Now we also offer custom painting for all our notebooks.
Why buy custom notebook from us?
There are many companies on the market who offer customized white-box notebook solutions based on notebook barebones from such well-known manufacturers as Clevo, ASUS, MSI, Compal and others. Compared to others, besides regular assembly services, we also offer a wider variety of components selection and customization options, guaranteed professional software installation, troubleshooting and extensive testing services, backed up by a full cycle of sale and post-sale product support. All these benefits are already included in the price of all our notebooks. Configuring and buying your fully custom personalized notebook configuration could be a risky business, but we can assure you that the business approach that we execute is a guarantee of eliminating all of those risks for all our customers. Overall, there are three key factors that define who we are: low pricing, high quality and excellent professional reputation.
Note: For full specifications see notebook barebone details.


text:
Parishioners at Holy Family Catholic church took part in Good
Friday service as authorities investigate a fire that appears to be arson just
steps away from the historic church.
Church Cannon, Richard Von Menshengen, said the fire happened
Thursday afternoon. What appears to be paper in a coffee can was lit on fire
outside the church's front entrance.
The blaze only caused some smoke damage to the outside of the
church because someone driving by saw flames and called 9-1-1, according to Von
Tucson firefighters tell us they are
actively investigating the case with Tucson police, but they are not releasing
much information at this time.
However, Tucson News Now has learned surveillance video has been
turned over to police which they are looking over now.
A suspect description has not been released but authorities say if
you know something about this incident, call police or 88-crime.
Copyright 2014 Tucson News Now. All rights


text:
Sun, April 27, 2014 (01:00pm to 04:00pm)
Visit us at the Playfair Open House to see all that this beautiful property has to offer! Tours will be offered and questions answered by camp staff throughout the afternoon.
Registration is not required for this event.
Program Level:
Event Registration Period Date & Time:
Wed, December 18, 2013 (03:55pm) to Wed, December 25, 2013 (03:55pm)
Fee for Girls:
Event Category:
Event Type:
Contact Email:
City/Camp Name:
Camp Playfair


text:
Stephan oversees the MSc in Holistic Science, teaching on the core modules and as part of several of the short courses at the College.
Stephan was born in Venezuela in 1953. He came to England at the age of six with his father and housekeeper, with whom he spoke Spanish (his mother tongue) at home. Since childhood Stephan has had a deep fascination with the natural world, and his scientific cast of mind lead him to do a degree in Zoology at the University of Durham and then a doctorate on the behavioural ecology of the muntjac deer at Oxford University.
Before Durham, Stephan spent a gap year helping to carry out ecological research in the remote Sengwa Research Station in Zimbabwe (then Rhodesia), where he worked on warthog ecology, and as a Durham undergraduate he led a two-man expedition to the Manu National Park in Peru. After completing his first degree he returned to Venezuela where he was a field assistant for the Smithsonian Institute, studying mammalian diversity in the rainforest and in the lowland plains. It was here that he learnt to play the 4- stringed Venezuelan guitar known as the 'cuatro'.
After Oxford Stephan was appointed Visiting Professor in Wildlife Management at the National University in Costa Rica, where he lived for two years before becoming a founder member of Schumacher College in 1990. The College's first teacher was James Lovelock, with whom Stephan has maintained a long-lasting friendship and scientific collaboration that culminated in their joint appointment as chair holders of the Arne Naess Chair in Global Justice and the Environment at the University of Oslo. Stephan lives on the College campus with his wife Julia Ponsonby and their son Oscar, and is the author of Animate Earth: Science, Intuition and Gaia published in 2006 by Green Books in the UK and Chelsea Green in the USA.
To read more about the MSc in Holistic Science
To read more about Animate Earth
Email: firstname.lastname@example.com
Tel: +44 (0)1803 860059
March 28 – April 8, 2011 – Ecoliteracy: First principles for radical change
May 23 – 27, 2011 – A Science of Qualities: Celebrating Brian Goodwin's Vision
September, 2011 – MSc in Holistic Science


text:
- Twitter feed loading
02 Jan
Posted by Tudor. Tags extreme php, multithreading, php
Some time ago, I've wrote a small server in PHP. Nothing fancy. It would listen on a socket and when a new client would connect, the server would start a new thread and manage the client's request. Since threading it's not available in PHP, I've emulated the threads with child processes which are available in php. A thread object simply encapsulates a new process started with pnctl_fork() and emulates – to some extent – the behaviour of the java.lang.Thread class, the main difference being that in my implementation, you don't extend the Thread class, you simply provide the name of a callback function in the constructor.
A simple multithreaded application would look like this:
require_once( 'Thread.php' ); // test to see if threading is available if( ! Thread::available() ) { die( 'Threads not supported' ); } // function to be ran on separate threads function paralel( $_limit, $_name ) { for ( $index = 0; $index < $_limit; $index++ ) { echo 'Now running thread ' . $_name . PHP_EOL; sleep( 1 ); } } // create 2 thread objects $t1 = new Thread( 'paralel' ); $t2 = new Thread( 'paralel' ); // start them $t1->start( 10, 't1' ); $t2->start( 10, 't2' ); // keep the program running until the threads finish while( $t1->isAlive() && $t2->isAlive() ) { }
This will display Now running thread 1 and Now running thread 2 messages with 1 second delays. I know, not that impressive, but hey, it's multithreaded.
PHP threading will only work on Unix and Linux systems, because pnctl_fork is nothing more than a wrapper for the fork() function from unistd.h and it's not available under Microsoft operating systems.
I know that the first example was pretty lame, but there are some more interesting things you could do with threads in PHP. For instance, if you need to do some server side processing of all the images in a directory, a multithreaded approach will be much faster.
require_once( 'Thread.php' ); // test to see if threading is available if( ! Thread::available() ) { die( 'Threads not supported' ); } // define the function to be run as a separate thread function processImage( $_image ) { // expensive image processing logic here } $threads = array(); $index = 0; foreach( new DirectoryIterator( '/path/to/images' ) as $item ) { if( $item->isFile() ) { $threads[$index] = new Thread( 'processImage' ); $threads[$index]->start( $item->getPathname() ); ++$index; } } // wait for all the threads to finish while( !empty( $threads ) ) { foreach( $threads as $index => $thread ) { if( ! $thread->isAlive() ) { unset( $threads[$index] ); } } // let the CPU do its work sleep( 1 ); }
PS: it's a bad practice to keep looping in order to wait for a thread to finish. An ongoing empty loop will quickly boost your CPU 's load to 100%. If you need your processor free (and you need it), simply send the current (looping) thread to sleep and let the others execute.
// wait for thread - bad approach (overloads the CPU) while ( $thread->isAlive() ) { } // wait for thread - correct approach while( $thread->isAlive() ) { sleep( 1 ); }
Here you go: Thread.php. Just click the link to download the class. If you have a better approach to this issue or think that the original class could be improved, don't be shy and leave a comment below. Credits will be given.
Multithreading in php | PHP-Blog.com
[...] the original: Multithreading in php Related ArticlesBookmarksTags PHP PHP is a computer scripting language. Originally [...]
January 27th, 2009 at 11:33 pm
January 27th, 2009 at 11:37 pm
Did you try it on a live project? Can we see it at work?
January 27th, 2009 at 11:44 pm
Unfortunatelly "live" , "at work" no because of M$ OS.
But i'll use it for my scripts in Ubuntu!
January 28th, 2009 at 11:59 am
I've used it on a project, but it's only available in intranet. But it works and that's all that matters. If you have any suggestions of improvement, so share
December 17th, 2009 at 8:24 pm
Hi guys,
My PC worked not correctly, too much mistakes and buggs. Please, help me to fix buggs on my computer.
My operation system is Win Vista.
At line 170, there is an error.
pcntl_waitpid( $this->pid, $status = 0 );
You never use the variable $status anyway, so it doesn't hurt. But if you ever decide to use the $status variable, passing in $status = 0 does not pass the variable to the function, it passes the value of the assignment, 0.
If you set your error reporting to strict, it will complain that:
"Only variables should be passed by reference"
Otherwise, thanks for sharing your code.
February 1st, 2010 at 11:51 am
10x man, I'll look into it and fix it later today. Sometime bugs escape one programmer just to be caught by another. That's the beauty of Open Source.
February 7th, 2010 at 11:18 am
I had a look at the code and it seems it was better the way it was. I made some tests, and, as if turned out, if I change that line and remove the $status variable, like such:
pcntl_waitpid( $this->pid, 0);
it will yield an fatal error, saying:
//Fatal error: Only variables can be passed by reference in Thread.php on line 170
I always want to pass in 0 as an argument there, so there are two ways in which that can be achieved:
// 1. The long way $status = 0; pcntl_waitpid( $this->pid, $status); // 2. The short way pcntl_waitpid( $this->pid, $status = 0);
Hope it's clear for everybody now.
February 10th, 2010 at 7:25 am
Why do you want to pass a zero in there? That parameter is not expecting a _value_, it's expecting a _reference_. PHP can can put the real status value in it and give it back to you so that you can check against it later.
See the functions pcntl_wif*()
I hope that made sense.
February 10th, 2010 at 11:33 am
I've browsed the manual, as this entry is over one year old and I can't remember why I took some decisions back then. It seems that you must always pass in a variable for the status to the function, in order to work. I'm not interested in the returned status, so I've passed in a zero variable.
Thanks for the example code. Any idea how I would use that in an Apache server that executes PHP scripts? I'm on Ubuntu and it seems as if pcntl_fork() is not available in the PHP that is in the apache. I tried the solution in
but it does not seem to work for me.
Any ideas?
It won't work like this. I think the best way to achieve multithreading is dropping PHP and switch to python or something else. Or rewrite in a different language the part you want to be multithreaded.
The function I'd like to thread returns a string, is it possible to retrieve that somehow and let them set in a result array in the main code starting the threads for example?
Thanks in advance, Zoli
Good one, Zoli! I'll update the Thread.php file in the future. Until then, you need to do the following: add "return" in front of the call_user_func_array() and
call_user_func() calls so that the start() method will return the original function's result. Like such:
// child pcntl_signal( SIGTERM, array( $this, 'signalHandler' ) ); $arguments = func_get_args(); if ( !empty( $arguments ) ) { return call_user_func_array( $this->runnable, $arguments ); } else { return call_user_func( $this->runnable ); } exit( 0 );
This is untested code, but it *should* work!
Thanks for that. I learned a lot from your code. A suggestion to an otherwise excellent class:
It is allowed for the first parameter of call_user_func_array to be an array(class, 'method'). So, there is a problem with function_exists in runnableOk. Besides, if it is_callable then function_exists. So I don't think you need to check both.
Ricardo Sanchez
Hi! Great script!
I've been testing the Zoli idea and the "return" aproximation and it does not work… mainly because the child dies and there is no communication between parent and child…
They are two separated processes, so… any idea to get returned data to the parent from the children function? Maybe sockets??
Ricardo Sanchez
Hi! I've found how to return data from child to parent, using pipes:
In class Thread:
/** * Starts the thread, all the parameters are passed to the callback function * @return void */ public function start() { $status = 0; $results = null; $pid = pcntl_fork(); if( $pid == -1 ) { //error forking, no child is created throw new Exception( $this->getError( Thread::COULD_NOT_FORK ), Thread::COULD_NOT_FORK ); }else if ( $pid ) {// parent $this->pid = $pid; } else { // child $this->pid = posix_getpid();//pid (child) $this->ppid = posix_getppid();//pid (parent) pcntl_signal( SIGTERM, array( $this, 'signalHandler' ) ); $array_args = func_get_args(); if ( !empty( $array_args ) ) { $results = call_user_func_array( $this->runnable, $array_args ); }else{ $results = call_user_func( $this->runnable ); } $pipe = "/tmp/pipe_"..$this->pid;//pid is known by parent if(!file_exists($pipe)) {//child talks to parent using this pipe umask(0); posix_mkfifo($pipe, 0600); } //we have to open the pipe and send the data serialized $pipe_descriptor = fopen($pipe, 'w'); fwrite($pipe_descriptor, serialize( $results ) ); //and kill the child using posix_kill ( exit(0) duplicates headers!! ) posix_kill( $this->pid , SIGKILL); exit(0); } }
In function which uses Thread:
$sleep_microseconds = 200000; // we don't want to achieve 100% CPU load! //start multiple threads!! for ($i = 0; $i start( 'param1','param2' ); } } //We are the parent... childs never reach this part of the code!! //Parent has to read child's pipes... Communication between parents and childrens is necesary in our society! while (!empty( $threads )){//while any child is alive... foreach($threads as $index => $thread){ $child_pipe = "/tmp/pipe_".$thread->getPid();//this pipe communicate the parent with one of his childs... look at Thread->start() method, in both places (child and parent) the pipe name must be the same! if (file_exists($child_pipe)){//if pipe exists, we (the parent) open it, listen to our child, and when the child has finished, the child will die and the parent close the pipe between them $file_descriptor = fopen( $child_pipe, "r"); $child_response = ""; while (!feof($file_descriptor)){//while pipe is open, parent continues reading $child_response .= fread($file_descriptor, 8192); } //we have the child data in the parent, but serialized: $array_responses[ $index ] = unserialize( $child_response ); //now, child is dead, and parent close the pipe unlink( $child_pipe ); unset($threads[$index]);//and remove the child from our array } } //parent must sleep for a while, because we don't want to achieve 100% CPU load! usleep( $sleep_microseconds ); } //now, we have all data from the forked childs in $array_responses
Shane Mc Cormack
I needed to pass a value by reference to the "threaded" function and noticed that in its current instance, this class only passes by ref, this was changed near line 147 by using:
$stack = debug_backtrace(); $arguments = array(); if (isset($stack[0]["args"])) { for($i=0; $i > count($stack[0]['args']); $i++) { $arguments[$i] = & $stack[0]['args'][$i]; } }
I'm not sure of the performance hit by doing this, but it works.
Shane Mc Cormack
Further to the above, I was mistaken, that obviously doesn't work, all it does is stop the warnings.
It only appeared to be working based on the input I was testing with, oh well.
Encapsulate the value you want to pass on in an object. Since objects are always passed by reference in PHP, it should do the trick.
The threading itself worked like a charm, unfortunately my singleton mysql wrapper wouldn't work with it as it always complained about the database going away.
Try opening a permanent connection to the MySQL server!
[PHP-mencoder] Des filigranes (watermark) dans vos flv avec PHP et mencoder « Emilien DAMART
September 16th, 2010 at 3:13 am
[...] l'ai donc réécrit en PHP en utilisant cette classe qui permet de gérer des threads (Attention, celle-ci utilise l'extension pcntl de PHP). [...]
Thanks for the great class! This has helped me with the question "What should I use for my PHP project as a command-line multithreaded net app: Python or Java". I'll go all the way with PHP.
October 31st, 2010 at 12:06 am
Thanks for this, I'd like to suggest an addition. I needed to call a method in a class, but runnableOK was returning false as a method isn't a function… So, assuming i'm passing the object instance and method name in an array like this: $t = new Thread(array($this, 'publicmethod')), the following change will allow it.
public static function runnableOk( $_runnable ) { // check for method existance if (is_array($_runnable)){ return (method_exists(get_class($_runnable[0]), $_runnable[1]) && is_callable($_runnable) ); } else{ return ( function_exists( $_runnable ) && is_callable( $_runnable ) ); } }
just make sure the method isn't private! Or, instead of passing the object, you could modify it to accept the class name.
Seems like a very nice class, and I've tried to implement it into an IRC bot written in PHP, but I can't get it to work properly without the bot dying. After trying Ricardo's pipe trick, i got a bit further, well the bot doesn't die after execution, but doesn't open the pipe either.
I wanted to try to implement some sort of threading mechanism, because the bot might have to execute some heavy commands every now and then, that is – commands which consumes a great amount of time (i.e. a ping command), which stalls the but while executing – so my thoughts were, launch the command in a new thread, and write back the reponse (when done) to the user/channel – while being able to make the bot do other tasks, while processing.
Any ideas? or is this just not possible?
Nice class, added a few lines to support static functions in objects:
/** * Implements threading in PHP * * @package * @version 1.0.0 - stable * @author Tudor Barbu * @copyright MIT */ class Core_Thread { const FUNCTION_NOT_CALLABLE = 10; const COULD_NOT_FORK = 15; /** * possible errors * * @var array */ private $errors = array( Core_Thread::FUNCTION_NOT_CALLABLE => 'You must specify a valid function name that can be called from the current scope.', Core_Thread::COULD_NOT_FORK => 'pcntl_fork() returned a status of -1. No new process was created', ); /** * callback for the function that should * run as a separate thread * * @var callback */ protected $runnable; protected $object; /** * holds the current process id * * @var integer */ private $pid; /** * checks if threading is supported by the current * PHP configuration * * @return boolean */ public static function available() { $required_functions = array( 'pcntl_fork', ); foreach( $required_functions as $function ) { if ( !function_exists( $function ) ) { return false; } } return true; } /** * class constructor - you can pass * the callback function as an argument * * @param callback $_runnable */ public function __construct( $_runnable = null, $_object = null ) { if( $_runnable !== null ) { $this->setRunnable( $_runnable, $_object ); } } /** * sets the callback * * @param callback $_runnable * @return callback */ public function setRunnable( $_runnable, $_object = null ) { if( self::runnableOk( $_runnable, $_object ) ) { $this->runnable = $_runnable; $this->object = $_object; } else { throw new Core_Exception( $this->getError( Core_Thread::FUNCTION_NOT_CALLABLE ), Core_Thread::FUNCTION_NOT_CALLABLE ); } } /** * gets the callback * * @return callback */ public function getRunnable() { if($this->object) return array($this->object, $this->runnable); return $this->runnable ; } /** * checks if the callback is ok (the function/method * actually exists and is runnable from the current * context) * * can be called statically * * @param callback $_runnable * @return boolean */ public static function runnableOk( $_runnable, $_object = null ) { if($_object !== null) return ( method_exists( $_object, $_runnable ) && is_callable( array($_object, $_runnable ) ) ); else return ( function_exists( $_runnable ) && is_callable( $_runnable ) ); } /** * returns the process id (pid) of the simulated thread * * @return int */ public function getPid() { return $this->pid; } /** * checks if the child thread is alive * * @return boolean */ public function isAlive() { $pid = pcntl_waitpid( $this->pid, $status, WNOHANG ); return ( $pid === 0 ); } /** * starts the thread, all the parameters are * passed to the callback function * * @return void */ public function start() { $pid = pcntl_fork(); if( $pid == -1 ) { throw new Core_Exception( $this->getError( Core_Thread::COULD_NOT_FORK ), Core_Thread::COULD_NOT_FORK ); } if( $pid ) { // parent $this->pid = $pid; } else { // child pcntl_signal( SIGTERM, array( $this, 'signalHandler' ) ); $arguments = func_get_args(); if ( !empty( $arguments ) ) { call_user_func_array( $this->getRunnable(), $arguments ); } else { call_user_func( $this->getRunnable() ); } exit( 0 ); } } /** * attempts to stop the thread * returns true on success and false otherwise * * @param integer $_signal - SIGKILL/SIGTERM * @param boolean $_wait */ public function stop( $_signal = SIGKILL, $_wait = false ) { if( $this->isAlive() ) { posix_kill( $this->pid, $_signal ); if( $_wait ) { pcntl_waitpid( $this->pid, $status = 0 ); } } } /** * alias of stop(); * * @return boolean */ public function kill( $_signal = SIGKILL, $_wait = false ) { return $this->stop( $_signal, $_wait ); } /** * gets the error's message based on * its id * * @param integer $_code * @return string */ public function getError( $_code ) { if ( isset( $this->errors[$_code] ) ) { return $this->errors[$_code]; } else { return 'No such error code ' . $_code . '! Quit inventing errors!!!'; } } /** * signal handler * * @param integer $_signal */ protected function signalHandler( $_signal ) { switch( $_signal ) { case SIGTERM: exit( 0 ); break; } } } // EOF
January 16th, 2011 at 10:57 pm
Thanks for sharing this! Inspired by your work I published Threadi today.
January 17th, 2011 at 12:13 pm
Thanks mate!
January 17th, 2011 at 12:14 pm
Hi .
I want to use this class in my php code in Ubuntu. but i dont know why it not worked here.
When i run the project:
if (Thread::available()) { die( 'Threads not supported' ); }
This message is shown:
Threads not supported
How can i solve this problem?
Make sure that the pnctl library is installed http://www.php.net/manual/en/book.pcntl.php . I think it's in the repositories.
how can i check the pnctl library is installed? Please describe me what do i do to use this class?
Do i use this class(Thread.php) in windws os?
I need multithreading to do some work.Please help me how i can use this class. I write the frist example of this page, but i dont have the problem: 'Threads not supported'
How can i check pnctl library is installed? How can i?
With Regards.Mojtaba
If it fails with that message, then the library is not installed. I just posted a link in the previous comment to the PHP manual's section on the pnctl. Read it, install pnctl and it will work…
January 18th, 2011 at 10:05 am
Thanks very much
January 18th, 2011 at 11:29 am
I have a question about using threading in php:
I need to check some conditions in my code and if the conditions were true then insert some information to mysql database and redirect the user to other pages. I dont like the user wait so that the informations is recorded to database and then redirect to other pages. Do i can insert information to my database as threading?
If i use this code at the end of my code: While(t1->isAlive()){}…
Then the user should be waiting so that transaction is compeleted and then redirect. So How can i solve this problem?
With Regards.Mojtaba
January 18th, 2011 at 12:41 pm
Writing input to the db takes very little time and you really shouldn't worry about that. This was only used in a CLI environment so I don't know its exact behavior under Apache or whatever server you might be using.
Hi Tudor, greetings from Ecuador…. I've tried your code sending simple parameters to start function (integer and string values) but if I use complex objects I cannot reach functions from my nested variable in the object…. I'm not sure if it is clear…
Thanks so much in advance for the help you could provide me…
Can you post some code?
Marines MUD – W pogoni za RAMem
[...] już szczęśliwym posiadaczem ubuntu, nie stanowi to żadnego problemu. Znalazłem też w sieci fajną klasę, która umożliwia czytelniejszą obsługę wątków w obiektowym stylu. Dzięki tej klasie obsługa wątków jest dziecinnie prosta. Autor zamieścił przykłady jej [...]
hi Tudo,
I need urgent help in this. I am trying to use your thread.php ro read multiple file but when i call processImage function then it does not come back to main function. Its not going to second loop to read files. Just hangs there itself.
CAn you guide me.
Hello Tudor,
What benefits are there to emulating multi-threading in PHP?
Don't get me wrong, you have come up with a working thread emulation, but what does it actually achieve?
The emulation will incur overhead, but the "threads" will not be assigned to separate processors by the OS. If anything using emulated threads is only going to slow an application down (as opposed to boosting performance).
Dude…seriously!!! Do some reading…
Prozessorauslastung fällt während Skript läuft (unter Ubuntu) - php.de
[...] die skripten multithreaded laufen lasse: hierbei verwende ich einen wrapper für pcntl_fork() (vgl.HIER). das skript erzeugt damit für die ersten 5-10 sekunden vollast auf allen 8 threads (oder sovielen [...]
How To "Find And Replace" Words In Multiple Files In a Folder : Ranjith Siji – Programming the Web
[...] via their port numbers (baibhavsingh.wordpress.com)You've Been Hacked! (famousbloggers.net)Thread class for multithreading in PHP (motane.lu)How do I increase upload file limit from 2MB to 10MB under Apache 2 UNIX / Linux web [...]
Asynchrone Threads in PHP - php.de
[...] danke für den Hinweis. War nur durch das drauf gekommen -> Multithreading PHP Script läuft jetzt auch ganz gut ohne das ganze, aber kurze Frage noch. Wird bei PHP-Code: [...]
I just needed a help regarding multithreading in php.So i visited it.
I follow up the source code of multithreading.but in the source m having an error.
Im having problem in the above line.Can anyone help me out ?
O Senhor do PHP: A Irmandade dos Scripts | LordFokas.com – Blog
[...] Outra coisa brutal que me apercebi, é que dá para fazer MultiThreading com PHP, através de uma classe implementada por um individuo cujo nickname é Tudor. Podem aceder ao seu blog e ter acesso a mais especificações sobre a classe Thread() aqui: http://blog.motane.lu/2009/01/02/multithreading-in-php/ [...]
Tudor do you have any idea how to create a shared memory between forks? Im realy newbie in this topic
Thanks for the code, much appreciated!
I've been trying to run a modified version of the 2nd example on my box, it works, but somewhere after executing the threads it stops if I enable the sleep(1); call *or* if I use this line
while( !empty($threads) )
Changing while to if fix the problem but well the logic is then broken.
The code is here, I'd be infinitely grateful if you can shed some light on it:
// ================================================ // $threads = array(); // Create and start threads for ($i = 1; $i start( $base_name, $file_name, $folder_name, $i ); $threads[] = array($i - 1 => $thread); } // Wait for all the threads to finish $i = 0; while( !empty($threads) ) { foreach( $threads as $i => &$thread ) { if ( !$thread[$i]->isAlive() ) { unset( $threads[$i] ); // die; // unset( $thread[$i] ); } } // Let the CPU do its work sleep(1); } // ================================================ //
Thanks in advance,
Linkdump #52: ABC PHP. « Tomasz Kowalczyk
[...] Multithreading in php. Trochę na temat wielowątkowości w PHP. [...]
Hi, I was thinking about something very similar, so thanks for saving my time
I have one note, the name is not picked right. Lot of people might be confused, because parallelism via processes is very different than via threads. Threads have shared memory, are run in one process and so on.
So much more suitable name should be Process.
Still thanks for the work!
is there a sollution for windows system?
I don't know! Might be, but I never use windows….
Better Convert pdf to Multiple jpg | Dalibor Sojic
[...] By default, PHP has no built-in support for multithreading, but Tudor Barbu has developed multithreading class for PHP. [...]
Netbeans Code Templates | The Playabl Blog
[...] to make the page load more quickly, I can use a template with the code I found on this PHP Multithreading site. Share [...]
is there a sollution for windows system?
October 29th, 2011 at 12:05 pm
Read the comment above yours…
Why is realtime apps for php such a problem? - Quora
November 11th, 2011 at 6:54 pm
[...] level support, there is a guy who created a class which mocks the JAVA Threading here is the link: http://blog.motane.lu/2009/01/02…This answer .Please specify the necessary improvements. Edit Link Text Show answer summary [...]
December 1st, 2011 at 12:48 am
If you are talking about Windows, in most of the cases the discussion involves .NET. Of course..you can achieve multithreading by interoping with Java, C++ etc., but since .NET always come in handy for me, I can recommend you this http://www.facebook.com/note.php?note_id=281965971827784
Thanks for your information
how to use this for search?
search result will execute same window but override previous one
My post is about achieving multithreading in general, not on a specific case. Of course, you are limited to the single main thread of PHP but which can spawn multiple child threads by interoping, for example, with .net.
You can think of it like this: PHP thread would pass a list of "operations" to be executed on different threads by .net. Instead of having them waiting one for eachother, they could run in parallel. Of course, you can not overcome the limitation of the PHP thread, but there is still a slight gain on performance.
Why use the loop to keep things alive?
You can just set the time limit to 0 and only when one thread closes you can check if there are any other working if not exit.
I think you might spare some resources.
I am working a lot with socket listeners built in PHP and Python… so they are never supposed to stop and the PHP version works very neat like that using quite few resources.
what just writing a plugin for sonic daemon?
victor wallin
what do you think about this solution? (Runs on Linux (slackvare) 18.104.22.168)
PHP 5.2.11 (cli) (built: Oct 2 2009 17:30:20)
require_once( 'Thread.php' ); if ( function_exists('sem_get') )echo "sem"; // test to see if threading is available if( ! Thread::available() ) { die( 'Threads not supported' ); } // function to be ran on separate threads function paralel( $_limit, $_name ,$lock) { sem_acquire($lock); for ( $index = 0; $index start( 10, 't1',$s1); $s2 = sem_get(2); $t2->start( 10, 't2',$s2); // keep the program running until the threads finish sem_acquire($s1); sem_acquire($s2); /* while( $t1->isAlive() && $t2->isAlive() ) {}//*/
I don't think your code got pasted right. Use
[code lang="php"] … [/code]
to paste properly.
February 25th, 2012 at 6:58 pm
Awesome! There's hardly any good implementations of forking in php available online, and this one is definitely the best!
February 26th, 2012 at 12:48 am
Cheers mate!
February 29th, 2012 at 5:03 am
Very nice! Thanks for sharing.
Hi !!!
I am trying to use this above example. I am working in WAMP. When i am running the Parallel-Returnable.php file its shows Fatal error: Class 'Threadi_Thread_NonThread' not found
And i want to know how to enable pcntl in WAMP ?
Please help me to solve this.
WIth Thanks & Regards,
Sorry mate, I did not write Threadi, so I can't offer support. You should contact the author, his name is Daniel Pötzinger and he blogs at http://www.typo3-media.com/blog/
However, based on your error – class not found – you didn't include the library correctly. But if you're using a windows system, it won't work as it relies on the pnctl_fork() function to spawn new "threads". Just read the manual: http://www.php.net/manual/en/book.pcntl.php
Good luck
PHP multithreading through .NET interop « PHP / Zend / www.elcome!
[...] For Unix we have http://www.php.net/manual/en/intro.posix.php and http://www.php.net/manual/en/intro.pcntl.php which are a set of complementary libraries that allows process manipulation operations. Let me repeat that: "process manipulation operations"… since there is nothing mentioned about threading, you can simply put it this way: PHP doesn't natively support threading in Unix through the libraries mentioned above, instead it supports process forking. As you may already noticed, I used the term of "natively" because you can achive multithreading by interoping with languages like Java, C / C++ or even .NET through Mono. If you may wonder what are the advantages of using threads over processes in general, read this http://www.programmerinterview.com/index.php/operating-systems/thread-vs-process/; in particular, each language can have it's own mechanisms of dealing with threads. A nice article on "multithreading" in PHP can be found on my comrade's blog Tudor a.k.a. motanelu http://blog.motane.lu/2009/01/02/multithreading-in-php/. [...]
Hello they call me Gabe I love handbags and all kinds of other things as well!
Wanna use objects and his methods or static methods?
Step 1: Change the method Thread::runnableOk to this:
public static function runnableOk( $_runnable ) { if (is_array($_runnable) && count($_runnable) == 2 ) { return method_exists($_runnable[0], $_runnable[1]); } return ( function_exists( $_runnable ) && is_callable( $_runnable ) ); }
Step 2: Use this code to use you objects
class MyClass { // function to be ran on separate threads function paralel( $_limit, $_name ) { for ( $index = 0; $index < $_limit; $index++ ) { echo 'Now running thread ' . $_name . PHP_EOL; sleep( 1 ); } } public static function staticMethod ( $_limit, $_name ) { for ( $index = 0; $index < $_limit; $index++ ) { echo 'Now running thread static ' . $_name . PHP_EOL; sleep( 1 ); } } } $m1 = new MyClass(); // create 2 thread objects $t1 = new Thread( array($m1,'paralel') ); $t2 = new Thread( array('MyClass','staticMethod') );
[...] [...]
[...] An example daemon is listed below, the class requires the PHP pcntl extension (*nix only) & Tudor Barbu's excellent Thread class → [...]
I did some of php coding for electriccars4kids.org
Thank you for sharing!
Regarding threading and MySQL (or probably any database server), here are my findings which might help someone else. Generally, launching a new thread "duplicates" all the variables and memory contents of the parent and your child starts with all of it as "baggage". This includes your current connection to MySQL. As long as your parent (or a second child) doesn't use that connection, you can use it from your child without any problems. If you have multiple children using the database, each child should open it's own connection (that kind of makes sense).
However, PHP screws you as soon as your first child ends. As we know, PHP automatically closes connections to MySQL once a script (e.g. your child) ends. This unfortunately includes the connection the child inherited initially from the parent. This means that as soon as one of your child processes has ended, your parent process will have to reconnect to MySQL in order to do anything with the database – or you will get the "MySQL has gone away" error.
In order to keep connections clearly assigned to each thread, I recommend to:
- open one new connection per child
- store the connection resource in a variable and always the identifier for any mysql_* commands. If you use mysqli, use the object oriented aproach and create a new mysqli-object for each thread.
- remember that your parent's mysql connection will be broken as soon as the first child process has ended. your parent will need to reconnect to MySQL.
I like you simple implementation, I see many threads in my task manager after running your script. I found on Git hub similar project which work better for me. https://github.com/kulikov/php-threads-manager
For those interested in parallel processing you can check out Gearman. Works with PHP.
September 8th, 2012 at 9:33 am
Hi Tudor
This is a great function you have build. It's easy to use and work very well.
Is there a build-in function to limit the number processes that runs at the same time? Or have you thought about building it in. I have for example perhaps 500000 loops through some data, that I want to spread out on multi processes, but of course I suppose it will not be good to start 50000 processes at the same time?! Or is there something build into PHP that ensures it doesn't start to many at the same time?
No Threading In Shared Servers « The Playabl Blog
September 10th, 2012 at 5:53 am
[...] have the cheapest plan in Dreamhost, which is the Shared Server plan. I tried testing Tudor Barbu's Thread class to see if I could get my site to multi-thread in order to produce pages as quickly as [...]
Php script issue, syntax error | question code
September 24th, 2012 at 6:32 am
[...] this one specific threading system i found in php, but it gives a error on index = 0;, any ideas? http://blog.motane.lu/2009/01/02/multithreading-in-php/ any help is appreciated. and i attached the link to the thread script of course, and thats about [...]
Gerben Wijnja
September 24th, 2012 at 10:45 pm
Hmm, I expected my code to be recognized, but it's not syntax highlighted. Can't find any pointers on how to post code, so here goes another try with [ code ] tags.
I made some code style improvements:
* Made all the code PHP CodeSniffer compatible.
* Fixed return type of kill() from 'boolean' to 'void'. Stop() returns void, so kill() will also return void.
* Removed underscores from local variables. Only private class variables should be prefixed with an underscore.
* Changed function name available() to isAvailable() – function names should always start with a verb.
* Changed function name runnableOk() to isRunnableOk() – same reason
* Changed function name signalHandler() to handleSignal() – same reason
<?php /** * Implements threading in PHP * * PHP version 5 * * @category Threading * @package None * @author Tudor Barbu <email@example.com> * @copyright 2009 MIT * @license http://en.wikipedia.org/wiki/MIT_License MIT License * @link http://blog.motane.lu/2009/01/02/multithreading-in-php/ */ /** * Thread class * * @category Threading * @package None * @author Tudor Barbu <email@example.com> * @copyright 2009 MIT * @license http://en.wikipedia.org/wiki/MIT_License MIT License * @link http://blog.motane.lu/2009/01/02/multithreading-in-php/ */ class Thread { const FUNCTION_NOT_CALLABLE = 10; const COULD_NOT_FORK = 15; /** * Possible errors * * @var array */ private $_errors = array( Thread::FUNCTION_NOT_CALLABLE => 'You must specify a valid function name that can be called '. 'from the current scope.', Thread::COULD_NOT_FORK => 'pcntl_fork() returned a status of -1. No new process was created' ); /** * Callback for the function that should run as a separate thread * * @var callback */ protected $runnable; /** * Holds the current process id * * @var integer */ private $_pid; /** * Checks if threading is supported by the current PHP configuration * * @return boolean */ public static function isAvailable() { $required_functions = array( 'pcntl_fork', ); foreach ( $required_functions as $function ) { if ( !function_exists($function) ) { return false; } } return true; } /** * Class constructor - you can pass * the callback function as an argument * * @param callback $runnable Callback reference */ public function __construct( $runnable = null ) { if ( $runnable !== null ) { $this->setRunnable($runnable); } } /** * Sets the callback * * @param callback $runnable Callback reference * * @return callback */ public function setRunnable( $runnable ) { if ( self::isRunnableOk($runnable) ) { $this->runnable = $runnable; } else { throw new Exception( $this->getError(Thread::FUNCTION_NOT_CALLABLE), Thread::FUNCTION_NOT_CALLABLE ); } } /** * Gets the callback * * @return callback */ public function getRunnable() { return $this->runnable; } /** * Checks if the callback is ok (the function/method * actually exists and is runnable from the current * context) * * can be called statically * * @param callback $runnable Callback * * @return boolean */ public static function isRunnableOk( $runnable ) { return ( function_exists($runnable) && is_callable($runnable) ); } /** * Returns the process id (pid) of the simulated thread * * @return int */ public function getPid() { return $this->_pid; } /** * Checks if the child thread is alive * * @return boolean */ public function isAlive() { $pid = pcntl_waitpid($this->_pid, $status, WNOHANG); return ( $pid === 0 ); } /** * Starts the thread, all the parameters are * passed to the callback function * * @return void */ public function start() { $pid = @pcntl_fork(); if ( $pid == -1 ) { throw new Exception( $this->getError(Thread::COULD_NOT_FORK), Thread::COULD_NOT_FORK ); } if ( $pid ) { // parent $this->_pid = $pid; } else { // child pcntl_signal(SIGTERM, array( $this, 'handleSignal' )); $arguments = func_get_args(); if ( !empty($arguments) ) { call_user_func_array($this->runnable, $arguments); } else { call_user_func($this->runnable); } exit( 0 ); } } /** * Attempts to stop the thread * returns true on success and false otherwise * * @param integer $signal SIGKILL or SIGTERM * @param boolean $wait Wait until child has exited * * @return void */ public function stop( $signal = SIGKILL, $wait = false ) { if ( $this->isAlive() ) { posix_kill($this->_pid, $signal); if ( $wait ) { pcntl_waitpid($this->_pid, $status = 0); } } } /** * Alias of stop(); * * @param integer $signal SIGKILL or SIGTERM * @param boolean $wait Wait until child has exited * * @return void */ public function kill( $signal = SIGKILL, $wait = false ) { return $this->stop($signal, $wait); } /** * Gets the error's message based on its id * * @param integer $code The error code * * @return string */ public function getError( $code ) { if ( isset( $this->_errors[$code] ) ) { return $this->_errors[$code]; } else { return "No such error code $code ! Quit inventing errors!!!"; } } /** * Signal handler * * @param integer $signal Signal * * @return void */ protected function handleSignal( $signal ) { switch( $signal ) { case SIGTERM: exit( 0 ); break; } } } ?>
Cheers mate! That was the coding standard of the company I was working for at the time. We weren't using Zend's coding standard!
How can I include max number of process?
Hi Tubo,
Your code is very clear.. i tried the example in shared hosting.
This script only runs the first thread…
Can you help me how to do this??
Amazing class man. Thank you! I will post an article about it in my blog soon.
I've done some "pipeing" using Memcached. Now this:
$t1 = new Thread( 'processing' ); $t1->start();
while( $t1->isAlive() ) {}
echo "Thread return: ".$t1->getReturn();
…works like a charm. (:
Same PHP script is showing different output in browser than when it's run from command line
December 30th, 2012 at 9:17 am
[...] "database.php" & "Thread.php" (Thread.php has been downloaded from here). database.php does some trivial tasks after connecting to a remote MondoDb database. Here's [...]
Same PHP script is showing different output in browser than when it#39;s run from command lineCode and Programming
[...] "database.php" & "Thread.php" (Thread.php has been downloaded from here). database.php does some trivial tasks after connecting to a remote MondoDb database. Here's [...]
Ricardo Fontanelli
Hi, thanks for sharing, when I used this class (by web browser), the response return 'Content-type: text/html' in my browser. Is it some Apache configuration?
PHP MULTITHREADING ( PHP MULTIHILOS ) | TusCodes.com
February 18th, 2013 at 7:37 pm
[...] clase Thread NO la desarrollamos nosotros, el crédito es de Tudor, pero le hicimos unas modificaciones para que funcionara con clases, solo pasándole como parametro [...]
Nice job with fork, but i would like to know if creating a c++ extension for php and using c++ threads is not a better approach.
As far as i know fork does not create genuine threads.
i have an idea to use it on windows also you can leran it from below link.
mutithreading in php .
Is there a set time out equivalent in php? - PHP Solutions - Developers Q & A
[...] need to start new thread, try this http://blog.motane.lu/2009/01/02/multithreading-in-php/ This entry was posted in PHP on June 26, 2011 by [...]
Php multithreading (Php multihilos) | TusCodes
[...] clase Thread NO la desarrollamos nosotros, el crédito es de Tudor, pero le hicimos unas modificaciones para que funcionara con clases, solo pasándole como parametro [...]
January 31st, 2014 at 12:00 pm
i cant find threads.php file, can someone share asap?
Just FYI.. The link to Thread.php is broken. I was able to copy it from a commentor but figured you might want to fix the link.
can u upload a copy of it. so tht i can download, pls
February 22nd, 2014 at 11:39 pm
Cannot download! Clicking on the link redirects to a page with only plain text: "No input file specified."
thread.php not available in the following link 'http://downloads.motane.lu/Thread.php'
I tried to download 'Thread.php', but it's giving me message in new page :- 'No input file specified.'. Can anybody help?
I am not able to downlod Threads class
Link is dead, is there some chance you can fix it ?
I have updated the link, it points to a github repository. Sorry about the inconvenience!
September 12th, 2014 at 3:31 am
For some odd reason I have a legacy PHP script that uses this on PHP 5.2 without any problems but on PHP 5.5 the children that are forked hang and require a kill -9 to get rid of. Does this work on PHP 5.5 or do I need to look at the other script as the problem for the hang?
RSS feed for comments on this post · TrackBack URI


text:
Written by:
I heard a rustle in the undergrowth
felt thunder in the ground,
my eyes fixed on the corner
as the monster came around.
As far as I could see
he was heading my way,
I hope he hasn't seen me
or this could be my last day.
I got back home but I could see
he's heading for my house,
and then I laughed,it's just a cat
but forgot that I'm a mouse.


text:
What Sandy Says main page
Subscribe in a reader
| 'I Don't Know How She Does It,' 'Drive,' 'Straw Dogs,' 'Lion King' »
Posted by WABC on September 15, 2011 in Entertainment Headlines
, Music
| Permalink
Comments are moderated, and will not appear on this weblog until the author has approved them.
If you have a TypeKey or TypePad account, please Sign In.
You are currently signed in as (nobody). Sign Out
Email Address: (Not displayed with comment.)
Remember personal info?


text:
Where I post things I make and things I like and probably things I don't like, too, but hopefully mostly things I do like instead.
ACCIDENTAL NYX HAUL: SHADOWS, SWATCHES, AND MY FACE 4And so continues the saga of reviewing my accidental Nyx haul, and let me say that this was the first time I was just overjoyed. All of the shadows I chose went on beautifully and had wonderful color payoff. These are three shadows I would ABSOLUTELY recommend.
I will say that I used my LORAC Pro palette for a highlight under my browbone, for my liner, and for my brows, but I do that for literally all of my makeup looks so like well there's that.
BLINGMetallic shimmer blueish silverThis, um, I was expecting to go on much lighter, so when it went on my upper lid, I was all, "OH WOAH WOWZA YOU ARE NOT A HIGHLIGHT SHADE, YOU ARE A BASE SHADE" but I think it worked out in the end. This shadow went on smooth as a dream, and the metallic finish is just great. It seriously looks like a perfect mix between pure silver and smoke. I absolutely adore it.
CLUB CRAWLMetallic shimmer slate purpleThis shade goes on a bit more purple than comes across in the pictures, but only just. This is the one I used on the base of my eyelid. Again, I just absolutely adore this one. It's fantastic. The color payoff is great. I had to layer a little, but not enough to annoy me—maybe passing over my lid two or three times. I will say it didn't stuck to my brush very well, but mostly I think it's because the brush I use for that is garbage. I really need to buy some decent eyeshadow brushes sometime soon.
ENCHANTEDDark metallic gray with green shimmerOkay, so if the Evil Queen from Snow White had a shade, this would be it. Enchanted is the perfect name—it feels like some evil ominous forest with horrifying trees that come out and grab you, and that is literally all I could ask for in a smoky eye crease shade. I will say that this shadow has a LOT of fallout and blended away really fast, but those are quick fixes. This shadow is, basically, the shit.
Theme by Lauren Ashpole


text:
- Calendar of Events
- Confirm Your Registration
- Printable Forms and Waivers
- NU Hartford Marathon
- One Mile Friday Presented By Stanley Black & Decker
- Courthouse O'Putnam 5K
- O'Niantic 5K
- Max's O'Hartford 5K
- Harvard Pilgrim Middletown Half & Legends 4-Mile
- ENOUGH! A Race to End Violence
- Burn Calories for Fuel 5K
- Glastonbury River Run
- BlumShapiro 5K for Camp Courant at the Travelers Championship
- CT Race in the Park
- Ten Penny Ale Shamrock Duathlon & 3.3 Mile
- Amica Iron Horse Half Marathon, 10K & 5K
- Summer Solstice Trail Run
- Riverfront Scramble Series
- Red Dress Run for Women Presented By UnitedHealthcare
- Litchfield Hills Olympic Triathlon & Duathlon
- The Rentschler Airfield 5K
- Niantic Bay Triathlon
- Bluff Point Trail Run
- Corey's Catsup & Mustard 5K Run & Charity Walk
- Old Wethersfield 5K & 10K
- Women's Triathlon
- Surftown Half & 5K
- HMF FitKids Fun Run at Envisonfest
- Pumpkin Run / Walk
- Zombie Chase
- Freedom Run 5K
- Norwich Winterfest 5K
- Blue Back Mitten Run Presented by UnitedHealthcare
- CT Race in the Park
- Ten Penny Ale Shamrock Duathlon & 3.3 Mile
- Amica Iron Horse Half Marathon, 10K & 5K
- Summer Solstice Trail Run
- Riverfront Scramble Series
- Red Dress Run for Women Presented By UnitedHealthcare
- Litchfield Hills Olympic Triathlon & Duathlon
- The Rentschler Airfield 5K
- Niantic Bay Triathlon
Athlete Information
Sunday - October 26, 2014
Higganum, CT
Start Time: Kids 12:15 PM, 5K Run/Walk 1:00 PM
|Note: Road Closures occur prior to first event.
Dr. AJ Gagliardi from Muscle and Joint Performance will be at the race offering free pre and post-race stretching and soft tissue treatment. If you have any pain before, during, or after the race feel free to visit his tent.
This event is timed by Bay State Race Services and uses the B-Tag timing system (timing chip is attached to the back of your race bib). Please wear your race bib on the front of your shirt.CATEGORIES:
- Top three overall male and female finishers
- Male Age Group
- Female Age Group
- Clydesdale (men 200+lbs.)
- Athena (women 150+lbs.)
- Wheelchair
- 5-year age groups from 10-80+
- 9 & under
- Top 3 overall male/female
- Top 3 in each male/female age division
No "double dipping"Prizes:
A $100 gift certificate, donated by soundRUNNER, will be awarded to the top overall male and female winner.
- Walkers welcome!
- Free post-race refreshments.
Costume contest!
Get into the festive spirit and come out with your funkiest costume to be eligible for some great, fun prizes.
Gold Sponsors
600 Old County Circle
Windsor Locks, CT 06096
28 Crescent Street
Middletown, CT 06457
212 Saybrook Road
Higganum, CT 06441
Silver Sponsors
Higganum Family Medical Group
ProHealth Physicians
415 Killingworth Avenue
Higganum, CT 06441
Lenny and Joe's Fish Tale
1301 Boston Post Road
Madison, CT 06443
The Center for Children, LLC
2213 Main St.
Glastonbury, CT
Killingworth True Value Hardware
158 Route 81
Killingworth, CT 06419
Higganum Dental Associates, LLC
415 Saybrook Road
Higganum, CT 06441
|Pizzeria DaVinci
7 Killingworth Rd.
Higganum, CT
Cornerstone Construction Services
P.O. Box 746
Killingworth, CT 06419
Tower Laboratories, Ltd.
P.O. Box 306
Centerbrook, CT 06409
|Higganum Pharmacy
3A Candlewood Hill Road
Higganum, CT 06441
Hillcrest Agency
30 Main Street
Centerbrook, CT 06409
Coyote Blue
1960 Saybrook Road
Middletown, CT 06457
Wine & Spirits Wholesalers of Connecticut, Inc.
132 Temple Street
New Haven, CT 06510
203-624-9870 Fax
|Dzialo, Pickett & Allen, PC
148 Broad Street
Middletown, CT 06457
1471 Whalley Avenue
New Haven, CT 06515
|The Technology Group, LLC
147 Charter Oak Avenue
Hartford, CT 06106
|Wiese Enterprises, LLC
18 Leon Burr Road
Higgnaum, CT 06441
|Copper Skillet Restaurant
184 Route 81
Killingworth, CT 06419
|Wilson, Pinder & Snow, LLC
130 East Main Street
Clinton, CT 06413
|Jack's Country Restaurant
26 Killingworth Road
Higganum, CT 06441


text:
|Preferences / Editor Preferences
The Custom Validation Engines preferences panel is opened from menu .
If you want to add a new custom validation tool or edit the properties of an exiting one you can use the Custom Validator dialog displayed by pressing the New button or the Edit button.
Edit a Custom Validator
The configurable parameters of a custom validator are the following:


text:
Choose your preferred language. We speak English and 41 other languages.
Most often used by people in the United States
All languages
Show me hotels in nearby cities:
|Hotel Tiempo Via Sannio,19, Naples Central Station, Naples (0.6 miles from Poggioreale)
Score from 1106 reviews: Very good Latest booking: 2 hours ago There is 1 person looking at this hotel.Less than half a mile from the Gianturco Metro Station, the Hotel Tiempo provides access to private grounds and free Wi-Fi throughout. More…
$75 Average price per night
|Holiday Inn Naples Centro Direzionale Isola E 6, Naples Central Business District, Naples (1 miles from Poggioreale)
Score from 281 reviews: Good Latest booking: 1 hour agoThe Holiday Inn Naples is a 4-star hotel in the Centro Direzionale, the city's business area. More…
$80 Average price per night
|Ramada Naples Via Galileo Ferraris 40, Naples Central Station, Naples (1.3 miles from Poggioreale)
Score from 462 reviews: Good Latest booking: 4 hours agoLocated next to Napoli Central Train Station, the Ramada Naples features a Mediterranean restaurant. Rooms come equipped with satellite TV and Wi-Fi is free throughout. More…
$86 Average price per night
|Europa Grand Hotel & Restaurant - Sea Hotels Corso Meridionale 14, Naples Central Station, Naples (1.4 miles from Poggioreale)
Score from 626 reviews: Good Latest booking: 16 hours agoThe Europa Grand Hotel is in a 19th-century building right next to Napoli Piazza Garibaldi Train Station. All rooms are air-conditioned, and the restaurant serves traditional Neapolitan cuisine. More…
$56 Average price per night
|Stelle Hotel The Businest Corso Meridionale 60/62, Naples Central Station, Naples (1.4 miles from Poggioreale)
Score from 593 reviews: Excellent Latest booking: 1 hour agoIn a great location in front of Naples Central Train Station, Stelle Hotel The Businest features soundproof rooms with free Wi-Fi and air conditioning. Private parking is available on site for a fee. More…
$67 Average price per night
|Starhotels Terminus Piazza Garibaldi 91, Naples Central Station, Naples (1.5 miles from Poggioreale)
Score from 470 reviews: Good Latest booking: 2 hours ago There is 1 person looking at this hotel.The Starhotels Terminus is next to Naples Central Train Station and a 15-minute walk from the Naples Cathedral. It features a panoramic roof terrace with views of Mount Vesuvius and the sea. More…
$75 Average price per night
We've negotiated with thousands of hotels to get the very best deals. We call them Secret Deals and they only last for a limited time.
You can get these deals for free by subscribing to our newsletters. You can even choose your favorite destinations to receive personalized deals.
Get started now by entering your email address. We'll instantly send you a link to our Deal Finder!
Don't worry – your email address is safe with us. We'll never share your private information and you can unsubscribe at any time.


text:
Sha-na-na! It's Lola Allan! If you've had the pleasure of being served by Lola at Poor Calvin's, you know she's coined this phrase. "Sha-na-na" is her way of starting a sentence. Also ending a sentence. Explaining a behavior. Saying "surprise!" …Or using any other sort of exclamation. As surprising as it may seem, this flamboyant personality is also studying to get her Associate's degree in "Science of Funeral Services," attending mortuary school.
Mortuary school… how did you become interested in that?
I love people. When my grandfather died, he looked so natural, like I could hop in the casket with him. I find embalming wonderful, because it gives everyone one last chance to look at the body before it is buried. I just want to be there for people when they pass.
This is a male-dominated field. How are you breaking the mold?
I'm trying to break that stereotype. This field has been discriminatory against women because we are more nurturing, but I think you need that. You don't always need stone-cold embalmers without feelings. Sometimes you need to show emotion- I won't break down on the job, but a tear could come down.
Does it bother you to see bodies?
Nothing really bothers me, the only thing that does is taking clothes home with me after working- like my shoes and hairnet and gloves.
Not even when someone is fresh coming into the morgue?
It can smell rancid when we have to aspirate a person (release the air) to reduce the swelling, but it doesn't make me nauseous. During my apprenticeship, the mortician did it so quick that I smelled it, and it took me by surprise- I actually took a step back.
At 41 years old, why now?
This was my second chance. Right out of high school I started mortuary school, but I worked three jobs and dated a football player, so with full-time school I had too much on my plate. I quit. Now 20 years later, here I am doing it again.
You've been working at Poor Calvin's for almost one year. What appeals you about serving while you finish your apprenticeship?
Even though I'm a waitress I know the ins and outs of the front of house. I was a bar manager and worked at the Georgia Dome. It's nothing for me to go up to people and talk to them. Surprisingly I was very quiet as a girl, but then one day, once I got on stage it broke me out.
What performing did you do?
I was a showcase dancer. Back in the 90's I did exotic and gogo dancing in Ohio. It supported me through college.
Once you finish your apprenticeship, what part of funeral services do you want to pursue?
I would like to go to the scene of the crime and pick up the body to take to the funeral home. I see myself going out to California to start acting again, and then maybe I can open my own funeral home.
How has this made you feel about how you want your body to be handled when you pass?
Before studying, I wanted to be buried, but now I want to be cremated. And I want it to be a celebration when my time comes. There will be lots of dancing and sha-na-na!
May 13th, 2014
10:15 am
I would reccomend reading some Thomas Lynch, my favorite essayist. Who's also a poet/funeral director.
May 15th, 2014
1:31 pm
Ive had the chance to be served by miss Lowla, And boy was I in for a treat, her service is #1 out of all my dinning experiences. She knows how to champion each guest with one of a kind personality, fit for all people and age, leaving you satisfied and the need to come again to enjoy Lowlas perfect way to put a smile on your face. Thanks Poor Calvin's for having one of a kind!!!!! Lowla, you rock!! Sha'na' na'!!!!


text:
Feb 9, 2012
Mumbai: Brothers pay for filing baseless case in consumer court
Filing "baseless" claims in a consumer court can invite dire consequences, as three brothers from Matunga realized it the hard way. The three siblings were fined Rs 30,000 by a consumer forum for dragging a builder to court over complaints that were "devoid of substance".
Recently, the National Consumer Disputes Redressal Commission too pheld the State Consumer Disputes Redressal Commission's fine order on the Nawathe brothers-Rashmi, Pradyot and Prakash-all residents of the 11-storey Rajbaug Building on Deodhar Road in Matunga.
Consumer forum fines ICICI bank for wrongful delivery of ATM
ICICI bank has been directed by a consumer forum to pay Rs 20,000 as compensation to one of its consumers whose ATM card was delivered to a wrong hand, who withdrew money from the account fraudulently.
The ATM card landed at a wrong address and was used for withdrawing over Rs 48,000 from the savings account of a person, who was waiting for the same to be delivered at his address.
A District Consumer Disputes Redressal Forum (Central) gave its ruling in the favour of account holder Datta Ram, saying that the act of the private bank caused "mental agony and harassment" to him for its failure to return the money to his account in spite of information that it was not withdrawn by him using the ATM card.
Chandigarh: Waterlogging damages cars, residents win claim
Two Tricity residents, whose cars got stuck on waterlogged roads during the monsoon, have got relief through the UT Consumer Disputes Redressal Forums after their claims were denied by the respective insurance companies.
In the first case, Harjit Singh, the Proprietor of Kanwar Enterprises in Industrial Area, Chandigarh, had to knock the doors of the Consumer Forum after the insurance company denied his claim. Singh told the court that in July 2011, he was going from Chandigarh to Mohali when he was caught in heavy rain. His car stalled at the YPS crossing in Mohali. It had to be towed to the workshop the next day.
The AC and radio of the car were not working. Singh paid a total of Rs 1 lakh approximately on repair, and submitted the insurance claim to the company.
Mumbai: Consumer forum asks airline to pay Peddar Road resident Rs75,000
A city consumer forum has directed Kingfisher Airlines to pay Rs75,000 to a Peddar Road resident for failing to accommodate his family members on another flight after their flight, for which tickets were booked six months in advance, was cancelled.
The Mumbai Suburban District Consumer Disputes Redressal Forum found much substance in the allegation levelled by Sanjay Banga that the airline had cancelled several flights during the period in order to compel passengers to purchase new tickets by paying full ticket amount at the eleventh hour, and thus get rid of tickets booked in advance at concessional rates.
Mumbai: Pay Rs30k for losing customer's handset, mobile-maker told
Three years after Gurav Sharma, a resident of Marol, Andheri (east), lodged a complaint against Samsung Electronics Private Limited, the District Consumer Forum has directed the company to pay him Rs30,000 as compensation for failing to repair his mobile phone.
A division bench of JL Deshpande and Deepa Bidnuskar observed, "It will not suffice to order the issuing of a new mobile phone, as the complainant must have already purchased one. But the mental agony and harassment caused to him during the intervening period without a phone, and the efforts gone into filing the complaint and following up through a lawyer requires to be compensated."
Delhi: Discom to pay Rs 10K to woman for inflated bill: Consumer forum
BSES Yamuna Power Ltd has been asked by a consumer forum here to pay Rs 10,000 to one of its customers as compensation for "harassing" her by sending an inflated bill and then disconnecting her electricity supply for not paying it.
The Delhi District Consumer Disputes Redressal Forum said that the "arbitrary and illegal" act of the discom of sending an inflated bill of over Rs 81,000 to the complainant, Zarina Khatoon, amounts to "deficiency" of service and "illegal trade practice."


text:
Several former employees of Firebrand.com, the ads-as-content site that folded despite millions of investment dollars and plenty of sexy French commercials, are coming together to start their own ad agency. Because when you fail at giving something away for free, try selling it instead. [Adrants]
Take It From The Experts
Pending approval Hamilton Nolan


text:
31 users have voted.
The Handbrake on a bike?
A new tipe of earphones
a wire
I think it's emmm a jomping rope!!!!!
it is a bicycle
it is a jump rope i think!
skipping rope that's for sure
An electrical wire(tiny one)?
maybe it is an electrical machine to keep body fit
I think it is jumping rope.........
maybe an electricital wire
could it be a small skipping rope?
maybe fitness machine
it's an equipment for the bicycle


text:
Welcome to The Carpet KASTLE – The popularity of bass-heavy dance music is spreading like wildfire across the world, with many producers crafting their own styles of dubstep, grime and garage. In the city of San Francisco, CA DJ/producer Kastle has cultivated his own style of bass-heavy beats with a soulful twist.
« Back to Events
5.2 Living Room Sessions: KASTLE with Austin Paul + JBZ & Niko Saks + GoodroidiCal Import
- Start:
- May 2, 2013 10:00 pm
- End:
- May 2, 2013 11:00 pm
Google Map
- 3456 North Miami, Miami, FL, United States, 33127