Building for success and failure with Disqus
-
Upload
jonathon-hill -
Category
Engineering
-
view
145 -
download
7
Transcript of Building for success and failure with Disqus
![Page 1: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/1.jpg)
Building for Success and Failure with
AtlantaPHP, October 2014
![Page 2: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/2.jpg)
Says Every Developer Ever
“Let’s Build a Blog!”
![Page 3: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/3.jpg)
![Page 4: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/4.jpg)
![Page 5: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/5.jpg)
What is it?
• Discussion web service
• Free as in beer
• Integrates with everything
• Quality content
• OAuth and SSO
• Embeddable widget
• Web API
![Page 6: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/6.jpg)
![Page 7: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/7.jpg)
![Page 8: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/8.jpg)
![Page 9: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/9.jpg)
![Page 10: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/10.jpg)
Fundamentals
A crash course
![Page 11: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/11.jpg)
Forum
Thread
Post
![Page 12: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/12.jpg)
Category Limitations
• Categories may only be created using the API.
• Moderation may not be performed on posts by Category, only by Forum and Thread.
![Page 13: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/13.jpg)
Disqus API
threads/createthreads/list
posts/createposts/listposts/report
Full documentation is available at http://disqus.com/api
![Page 14: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/14.jpg)
Registering Your App
https://disqus.com/api/applications/register/
1. Specify Domains
2. Set Permissions
ReadRead and WriteRead, Write, and
Manage
3. Save Tokens
Access TokenAPI KeyAPI Secret
![Page 15: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/15.jpg)
Create a Forum
https://disqus.com/admin/create/
1. Name your site
2. Specify a unique domain
Creating an application does not implicitly create a forum!
![Page 16: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/16.jpg)
Posting to Disqus
As a user
Authenticate via OAuth
As a guest
1. Enable “Allow guests to comment” (Settings > General)
2. Application domain must be set correctly
3. Use the magic API key:
E8Uh5l5fHZ6gD8U3KycjAIAk46f68Zw7C6eW8WSjZvCLXebZ7p0r1yrYDrLilk2F
![Page 17: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/17.jpg)
drexarj/disqus-php github.com/disqus/disqus-phpComposer: drexarj/disqus-php
![Page 18: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/18.jpg)
![Page 19: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/19.jpg)
What could possibly go wrong?
![Page 20: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/20.jpg)
![Page 21: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/21.jpg)
![Page 22: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/22.jpg)
![Page 23: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/23.jpg)
Caching to the Rescue
![Page 24: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/24.jpg)
Caching to the Rescue
![Page 25: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/25.jpg)
It’s Dynamic Data…
• New posts submitted
• Moderator approves post
• Moderator disapproves post
• User flags a post as objectionable
![Page 26: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/26.jpg)
Conflicting Objectives
• High load
• Short cache expiration
• Failover
• No cache expiration
• How to synchronize?
![Page 27: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/27.jpg)
Adding a Failover Cache
burst cache
failover cache
1
23
![Page 28: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/28.jpg)
Failing Over
burst cache
failover cache
1
2
3
![Page 29: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/29.jpg)
Adding a Health Check
burst cache
failover cache
2
4
3
1
![Page 30: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/30.jpg)
Caching Health Status
• If health status expires, everything just fails over
• Adjust the health status expiration to back off:
• FAIL 1: expiration=2 minutes
• FAIL 2: expiration=4 minutes
• FAIL 3: expiration=8 minutes
• …etc
![Page 31: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/31.jpg)
–You
“Is it worth it?”
![Page 32: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/32.jpg)
![Page 33: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/33.jpg)
Implementation: Cache Servers
• Burst: memcached
• Failover: MongoDB (or Redis)
![Page 34: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/34.jpg)
Implementation: Scripts
• Health check
• Cache warmup
• Thread creation
![Page 35: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/35.jpg)
Implementation: API Client
• Guzzle-based client (compwright/disguz)
• Custom Guzzle Cache adapters
![Page 36: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/36.jpg)
Building for Success and Failure with
AtlantaPHP, October 2014
![Page 37: Building for success and failure with Disqus](https://reader035.fdocuments.in/reader035/viewer/2022062312/5565ac41d8b42a083a8b5067/html5/thumbnails/37.jpg)
Thank you!
• https://github.com/compwright/disqus-demo
• https://github.com/compwright/disguz
• https://github.com/compwright/disqus-cli
Feedback: https://joind.in/12119